【发布时间】:2018-05-22 00:01:05
【问题描述】:
我正在使用 SuperLearner R 包。 我正在尝试为训练集和测试集生成预测的 y 值。
在没有定义“newX”的情况下拟合超级学习模型以首先获得关于训练集的预测,以便我可以计算 MSE 并绘制预测与实际 Y 值的关系后,我使用“predict”命令来预测测试的 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)
然后,“预测”后出现以下错误: “object$whichScreen 中的错误:$ 运算符对原子向量无效”
我浏览了很多在线资源学习如何在拟合 SuperLearner 模型后使用“预测”,我正在做的和其他人一样:即把拟合的 SuperLearner 模型的对象名称(在这种情况下, "sl.cv") 后跟新的测试集。我什至没有输入 $ 运算符。
为什么我会收到此错误消息?我该如何解决这个问题?
另一个问题是:添加 cvControl=list(V=10) 作为选项是否会产生任何变化?我认为 SuperLearner 模型的默认设置是进行 10 倍交叉验证。所以,删除“cvControl=list(V=10)”不会改变任何东西,对吧?
非常感谢您的建议。谢谢!
【问题讨论】:
-
您的标签和训练数据看起来如何?这些是矩阵、向量、整数、字符串还是它们是什么?
-
标签是数字分数,训练数据是词矩阵(词袋)。
-
Y变量标签是一个向量; X 变量是一个矩阵。训练和测试数据集的矩阵格式相同。
标签: r object predict supervised-learning