sp_rxPredict
适用于: SQL Server 2016 (13.x) 及更高版本 - 仅限 Windows
为给定输入生成预测值,该输入由存储在 SQL Server 数据库中的二进制格式的机器学习模型组成。
提供近乎实时的 R 和 Python 机器学习模型评分。 sp_rxPredict
是用C++编写的存储过程,专门针对评分操作进行优化。 sp_rxPredict
是一个包装器, 用于:
函数 | 包装器 |
---|---|
rxPredict R 函数 |
- RevoScaleR - MicrosoftML |
rx_predict Python 函数 | - revoscalepy - microsoftml |
必须使用 R 或 Python 创建模型。 但是,在目标数据库引擎实例上序列化并存储二进制格式后,即使未安装 R 或 Python 集成,也可以从该数据库引擎实例使用它。 有关详细信息,请参阅 SQL Server 中的sp_rxPredict实时评分。
语法
sp_rxPredict ( @model , @input )
[ ; ]
参数
@model
采用受支持格式的预先训练模型。
@input
有效的 SQL 查询。
返回值
返回评分列,以及输入数据源中的任何传递列。
如果算法支持生成此类值,则可以返回额外的评分列,例如置信区间。
注解
若要启用存储过程的使用,必须在实例上启用 SQLCLR。
注意
启用此选项会产生安全影响。 如果无法在服务器上启用 SQLCLR,请使用替代实现,例如 PREDICT (Transact-SQL) 函数。
用户需要 EXECUTE
对数据库拥有权限。
支持的算法
若要创建和训练模型,请使用 SQL Server 机器学习 Services(R 或 Python)、SQL Server 2016 R Services、SQL Server 机器学习 Server (独立)(R 或 Python)或 SQL Server 2016 R Server (独立)提供的 R 或 Python 支持的算法之一。
R:RevoScaleR 模型
1 个模型还支持使用 PREDICT
函数进行本机评分。
R:MicrosoftML 模型
- rxFastTrees:快速树
- rxFastForest:快速林
- rxLogisticRegression:逻辑回归
- rxOneClassSvm:OneClass SVM
- rxNeuralNet:神经网络
- rxFastLinear:快速线性模型
R:MicrosoftML 提供的转换
- rxFastTrees:快速树
- concat:机器学习 Concat 转换
- 分类:机器学习分类数据转换
- categoricalHash:机器学习分类 HashData 转换
- selectFeatures:机器学习功能选择转换
Python:revoscalepy 模型
1 个模型还支持使用 PREDICT
函数进行本机评分。
Python:microsoftml 模型
- microsoftml.rx_fast_trees:提升树
- microsoftml.rx_fast_forest:随机林
- microsoftml.rx_logistic_regression:逻辑回归
- microsoftml.rx_oneclass_svm:异常情况检测
- microsoftml.rx_neural_network:神经网络
- microsoftml.rx_fast_linear:使用随机双坐标上升的线性模型
Python:microsoftml 提供的转换
- microsoftml.rx_fast_trees:提升树
- microsoftml.concat:将多个列串联为一个向量
- microsoftml.categorical:将文本列进行哈希处理并转换为类别
- microsoftml.categorical_hash:将文本列进行哈希处理并转换为类别
不支持的模型类型
不支持以下模型类型:
在 RevoScaleR 中使用
rxGlm
或rxNaiveBayes
算法的模型。R 中的 PMML 模型。
使用其他非Microsoft库创建的模型。
使用包含转换的转换函数或公式的模型,如
A ~ log(B)
实时评分不支持。 若要使用此类型的模型,建议在将数据传递到实时评分前对输入数据执行转换。
实时评分不使用解释器,因此在评分步骤中不支持可能需要解释器的任何功能。
示例
DECLARE @model =
SELECT @model
FROM model_table
WHERE model_name = 'rxLogit trained';
EXEC sp_rxPredict @model = @model,
@inputData = N'SELECT * FROM data';
除了是有效的 SQL 查询之外,@inputData中的输入数据还必须包含与存储模型中的列兼容的列。
sp_rxPredict
仅支持以下 .NET 列类型:double
、、float
short
、ushort
、long
、 ulong
和string
。 可能需要先筛选掉输入数据中不支持的类型,然后再将其用于实时评分。
有关相应的 SQL 类型的信息,请参阅 SQL-CLR 类型映射 或 映射 CLR 参数数据。