SuperLearner预测错误

时间:2017-12-07 19:36:00

标签: r object predict supervised-learning

我正在使用SuperLearner R包。 我正在尝试为列车和测试集生成预测的y值。

在拟合超级驾驶员模型而没有定义“newX”以首先获得列车集的预测以便我可以计算MSE并绘制预测与实际Y值之间时,我使用“预测”命令来预测测试的Y值通过运行以下代码来设置:

sl.cv<-SuperLearner(Y = label, X = train, 
                 SL.library=c("SL.randomForest", "SL.glmnet", "SL.svm"),
                 method = "method.NNLS", verbose=TRUE, cvControl=list(V=10))

pred.sl.cv <- predict(sl.cv, newdata=test, onlySL = T)

然后,我在“预测”后得到以下错误: “对象中的错误$ whichScreen:$运算符对原子向量无效”

我浏览了许多在线资源,了解如何在安装SuperLearner模型后使用“预测”,我正在做其他人所做的事情:也就是说,设置适合的SuperLearner模型的对象名称(在这种情况下, “sl.cv”)接着是新的测试集。我甚至没有键入$运算符。

为什么我收到此错误消息?我该如何解决这个问题?

另一个问题是:添加cvControl = list(V = 10)作为选项是否会进行任何更改?我认为SuperLearner模型的默认设置是进行10倍交叉验证。所以,删除“cvControl = list(V = 10)”不会改变任何东西,对吗?

我很感激你的建议。谢谢!

1 个答案:

答案 0 :(得分:0)

问题是您正在为您的火车和/或测试数据使用矩阵。您应该使用data.frame。因此,请将代码更改为以下内容:

sl.cv<-SuperLearner(Y = label, X = as.data.frame(train), 
                 SL.library=c("SL.randomForest", "SL.glmnet", "SL.svm"),
                 method = "method.NNLS", verbose=TRUE, cvControl=list(V=10))

pred.sl.cv <- predict(sl.cv, newdata=as.data.frame(test), onlySL = T)

另外,请确保您的标签是一个列表。