首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SuperLearner预测误差

SuperLearner预测误差
EN

Stack Overflow用户
提问于 2017-12-08 03:36:00
回答 1查看 682关注 0票数 3

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

在不定义"newX“的情况下拟合超级学习器模型以首先获得训练集上的预测值,以便我可以计算均方误差和绘制预测值与实际Y值之间的关系之后,我使用”newX“命令通过运行以下代码来预测测试集的Y值:

代码语言:javascript
复制
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)

然后,在“predict”之后,我得到了以下错误:"Error in object$whichScreen:$ operator对于原子矢量是无效的“

我浏览了许多在线资源,以了解如何在拟合SuperLearner模型后使用“预测”,我正在做的就像其他人做的那样:即将拟合的SuperLearner模型的对象名称(在本例中为"sl.cv")放在新的测试集之后。我甚至没有输入$ operator。

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

另一个问题是:添加cvControl=list(V=10)选项会有什么变化吗?我认为SuperLearner模型的默认设置是进行10次交叉验证。所以,删除"cvControl=list(V=10)“不会改变任何事情,对吧?

我将非常感谢你的建议。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-12-08 04:15:36

问题是您使用的是训练和/或测试数据的矩阵。您应该使用data.frame。因此,请将您的代码更改为:

代码语言:javascript
复制
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)

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47702521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档