我正在使用 SQL Server 机器学习服务来运行 R 模型。我可以使用 RevoScaleR 和 rxSerializeModel 对其进行序列化,但我想使用插入符号而不是 RevoScaleR 这是我的代码,当要求对经过训练的模型进行序列化时会出错
Step1 使用 SP 训练模型
DROP PROCEDURE IF EXISTS generate_PCL_R_native_model;
go
CREATE PROCEDURE generate_PCL_R_native_model (@model_type varchar(30), @trained_model varbinary(max) OUTPUT)
AS
BEGIN
EXECUTE sp_execute_external_script
@language = N'R' -- Spesify langauge and R code
, @script = N'
require("RevoScaleR")
require("caret")
require("ranger")
library(caret)
library(ranger)
fitControl <- trainControl(method = "cv",
number = 5,
savePredictions = TRUE
,
classProbs = T,
verboseIter = F
)
rf_grid <- expand.grid(mtry = 2,
splitrule = c("gini", "extratrees"),
min.node.size = c(1, 3, 5));
if(model_type == "dtree") {
model_linmod <-
train(pclitemspct10r_new ~
+ d1
+ d2
+ d3
+ d4
+ d5
+ d6
+ d7
+ e1
+ e2
+ e3
+ e4
+ e5
+ e6
+ marriedd1
+ marriedd2
, data = PCL_train_data,
method = "ranger",
trControl = fitControl,
#tuneGrid = rf_grid
)
#serialize the model
trained_model <- as.raw(serialize((model_linmod, NULL));
}
'
, @input_data_1 = N'select * from [dbo].[training_IOP_data_new]'
, @input_data_1_name = N'PCL_train_data';
第 2 步 - 设置模型表以存储模型
DROP TABLE IF EXISTS PCL_models;
GO
CREATE TABLE PCL_models (
model_name VARCHAR(30) NOT NULL DEFAULT('default model'),
lang VARCHAR(30),
model VARBINARY(MAX),
native_model VARBINARY(MAX),
PRIMARY KEY (model_name, lang)
);
GO
Step 3 以表格形式保存模型
DECLARE @model2 VARBINARY(MAX);
EXEC generate_PCL_R_native_model "dtree", @model2 OUTPUT;
INSERT INTO PCL_models (model_name, native_model, lang) VALUES('dtree_model', @model2, 'R');
有什么方法可以序列化使用插入符号或其他一些库而不是 RevoScaleR 训练的 R 模型。