我正在使用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)”不会改变任何东西,对吗?
我很感激你的建议。谢谢!
答案 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)
另外,请确保您的标签是一个列表。