machine-learning - predict.NaiveBayes 中的错误:“并非所有用于在 newdata 中找到的对象中的变量名称”——(尽管没有变量丢失)
问题描述
我仍在通过 Max Kuhn 的插入符号包caret
学习使用包,并在尝试使用模型进行预测时陷入了16.2 部分最小二乘判别分析部分,如书中所示。plsBayesFit
predict(plsBayesFit, head(testing), type = "prob")
使用的数据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, head(testing), 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 ,似乎 -package 存在特定问题。所以我的猜测是,这只是一个- 并且没有什么可以在这里轻松修复!klaR
bug
推荐阅读
- flutter - 颤动两个对象 listview.builder 向上滚动错误-返回旧的或无效的状态实例
- datatable - 有没有办法在 vuetify Datatable 组件的元素中使用 contenteditable 属性
- android - 离子“ERR_CLEARTEXT_NOT_PERMITTED”
- java - 从 JAR 启动时,JTable 不显示 UTF-8 字符
- python-3.x - replace_ending 函数用新字符串替换句子中的旧字符串,但前提是句子以旧字符串结尾
- typescript - 如何使用 Typescript 正确键入被操作的对象
- flutter - 如何使容器可单击以及单击时会导致另一个页面颤动
- batch-file - 输入为定义的变量显示为空
- javascript - Angular本地存储,以避免网页刷新时数据丢失
- flutter - 页面加载前循环加载 Flutter