如何解决predict.NaiveBayes 中的错误:“并非所有在 newdata 中找到的对象中使用的变量名称”--尽管没有缺少任何变量
我仍在通过 The caret Package by Max Kuhn 学习使用 caret
包,并在尝试通过 plsBayesFit
使用 predict(plsBayesFit,head(testing),type = "prob")
模型进行预测时陷入了 16.2 Partial Least Squares Discriminant Analysis 部分也如书中所示。
使用的数据是data(Sonar)
包中的mlbench
,数据拆分为:
inTrain <- createDataPartition(Sonar$Class,p = 2/3,list = FALSE)
sonarTrain <- Sonar[ inTrain,-ncol(Sonar)]
sonarTest <- Sonar[-inTrain,-ncol(Sonar)]
trainClass <- Sonar[ inTrain,"Class"]
testClass <- Sonar[-inTrain,"Class"]
然后预处理如下:
centerScale <- preProcess(sonarTrain)
centerScale
training <- predict(centerScale,sonarTrain)
testing <- predict(centerScale,sonarTest)
此后使用 plsBayesFit <- plsda(training,trainClass,ncomp = 20,probMethod = "Bayes")
训练模型,然后使用 predict(plsBayesFit,type = "prob")
进行预测。
当我尝试这样做时,我收到以下错误:
Error in predict.NaiveBayes(object$probModel[[ncomp[i]]],as.data.frame(tmpPred[,: Not all variable names used in object found in newdata
我检查了训练集和测试集以检查是否有任何缺失的变量,但没有任何变量。我还尝试使用当时用于渲染本书的 2.7.1 版 pls
包进行预测,但这也给了我同样的错误。发生了什么?
解决方法
我尝试使用不同的模型来复制您的问题,因为我也遇到过这个 error
,但我失败了; caret
现在似乎与我使用它时的行为有所不同。
无论如何偶然发现了这个 Github
-issues here,而且似乎 klaR
-package 存在特定问题。所以我的猜测是这只是一个 bug
- 在这里没有什么可以轻易修复的!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。