0

我正在使用 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 模型。

4

0 回答 0