首页 > 解决方案 > predict.NaiveBayes 中的错误:“并非所有用于在 newdata 中找到的对象中的变量名称”——(尽管没有变量丢失)

问题描述

我仍在通过 Max Kuhn 的插入符号包caret学习使用包,并在尝试使用模型进行预测时陷入了16.2 部分最小二乘判别分析部分,如书中所示。plsBayesFitpredict(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软件包进行预测,该软件包当时用于渲染这本书,但这也给了我同样的错误。发生了什么?

标签: machine-learningdata-sciencer-caretnaivebayesleast-squares

解决方案


我尝试使用不同的模型复制您的问题,因为我也遇到过这种error情况,但我失败了;并且caret现在的行为似乎与我使用它时不同。

无论如何,在这里Github偶然发现了这个-issues ,似乎 -package 存在特定问题。所以我的猜测是,这只是一个- 并且没有什么可以在这里轻松修复!klaRbug


推荐阅读