我只是进入机器学习/ R领域,并第一次探索它的可能性。我试图在基于位的Varchar表中预测结果。表结构非常简单。它具有一个名为result的varchar列,以及其他三个确定结果的位。例如
ResultCode isPotato isFried isMashed
土豆泥1 0 1
炸薯条1 1 0
BakedPotato 1 0 0
DROP PROCEDURE IF EXISTS generate_potato_R_native_model;
go
CREATE PROCEDURE generate_potato_R_native_model (@model_type varchar(30), @trained_model varbinary(max) OUTPUT)
AS
BEGIN
EXECUTE sp_execute_external_script
@language = N'R'
, @script = N'
require("RevoScaleR")
if(model_type == "dtree") {
model_dtree<- rxDTree(ResultCode ~ isPotato + isFried + isMashed, data = TrainData);
trained_model <- rxSerializeModel(model_dtree, realtimeScoringOnly = TRUE);
}
'
, @input_data_1 = N'select * from dbo.TrainData'
, @input_data_1_name = N'TrainData'
, @params = N'@trained_model varbinary(max) OUTPUT, @model_type varchar(30)'
, @model_type = @model_type
, @trained_model = @trained_model OUTPUT;
END;
GO
DECLARE @model2 VARBINARY(MAX);
EXEC generate_potato_R_native_model "logit", @model2 OUTPUT;
INSERT INTO potato_models (model_name, native_model, lang) VALUES('model_dtree', @model2, 'R');
想法是将位传递给存储过程,并返回预测的varchar。当前,当我执行存储过程并尝试序列化以下模型时,我将返回“对因素无意义”。
DECLARE @model2 VARBINARY(MAX);
EXEC generate_potato_R_native_model "logit", @model2 OUTPUT;
INSERT INTO potato_models (model_name, native_model, lang) VALUES('model_dtree', @model2, 'R');
我使用的是正确的模型吗?如果是,我应该如何解决此问题?