R-预测命令错误“;未定义的列已选定";

R-预测命令错误“;未定义的列已选定";,r,predict,R,Predict,我是R的新手,我在R预测命令方面遇到了麻烦。 我收到这个错误 Error in `[.data.frame`(newdata, , as.character(object$formula[[2]])) : undefined columns selected 执行此命令时: model.predict <- predict.boosting(model,newdata=test) 以及我的培训数据的结构: $ RecordID: int 1 2 3 4 5 6 7 8 9 1

我是R的新手,我在R预测命令方面遇到了麻烦。 我收到这个错误

 Error in `[.data.frame`(newdata, , as.character(object$formula[[2]])) : 
  undefined columns selected
执行此命令时:

model.predict <- predict.boosting(model,newdata=test)
以及我的培训数据的结构:

$ RecordID: int  1 2 3 4 5 6 7 8 9 10 ...
 $ x1      : Factor w/ 4 levels "Americas","Asia_Pac",..: 1 2 2 3 1 1 1 2 2 4 ...
 $ x2      : Factor w/ 5 levels "Fifth","First",..: 5 5 3 2 5 5 5 4 3 2 ...
 $ x3      : Factor w/ 3 levels "Best","Better",..: 2 3 2 2 3 1 2 3 1 1 ...
 $ x4      : Factor w/ 2 levels "Female","Male": 1 2 2 2 1 1 2 2 1 1 ...
 $ x5      : int  1 67 75 51 84 33 21 80 48 5 ...
 $ x6      : num  21 13.8 30.3 11.9 1.7 13.2 33.9 17 3.4 19.5 ...
 $ x7      : num  0.35 0.85 0.73 0.39 0.47 0.13 0.2 0.12 0.64 0.11 ...
 $ Y       : Factor w/ 2 levels "Green","Yellow": 2 2 1 2 2 2 1 2 2 2 ..
我认为测试数据的结构有问题,但我找不到,或者我对“predict”命令的结构有错误的理解。请注意,如果我对训练数据运行predict命令,它就会工作。关于去哪里看有什么建议吗

谢谢

predict.boosting()
希望得到测试数据的实际标签,这样它就可以计算出它做得有多好(如下所示的混淆矩阵)

库(adabag)
数据(iris)

iris.adaboost当y为因子时,显示此错误,尝试将
作为.vector(y)~。
用于预测的数据的列名应与训练数据的列名完全相同。

测试数据也需要y变量谢谢。当我添加测试变量Y时,我会收到错误>测试预测.test,这似乎是另一个错误。为了调试它,我们需要使它可复制。理想情况下,您应该
dput()
足够多的列车和测试数据,以便其他人可以得到相同的错误,但我们可以从
dput(测试[1:20,])
dput(车头(列车[1:20,]))
开始。如果您运行这些命令并编辑您的问题以包含它们难看的输出,这会有所帮助。或者,如果您同意这是一个不同的错误,请提出另一个问题。
'data.frame':   343 obs. of  7 variables:
 $ x1: Factor w/ 4 levels "Americas","Asia_Pac",..: 4 2 4 2 4 3 3 3 4 1 ...
 $ x2: Factor w/ 5 levels "Fifth","First",..: 3 3 2 2 4 2 4 4 1 1 ...
 $ x3: Factor w/ 3 levels "Best","Better",..: 2 3 1 1 3 2 2 1 3 3 ...
 $ x4: Factor w/ 2 levels "Female","Male": 1 1 2 1 1 2 1 2 2 2 ...
 $ x5: int  82 55 47 31 6 53 77 68 76 86 ...
 $ x6: num  22.8 14.6 25.5 38.3 7.9 32.8 4.6 34.2 36.7 21.7 ...
 $ x7: num  0.679 0.925 0.897 0.684 0.195 ...
$ RecordID: int  1 2 3 4 5 6 7 8 9 10 ...
 $ x1      : Factor w/ 4 levels "Americas","Asia_Pac",..: 1 2 2 3 1 1 1 2 2 4 ...
 $ x2      : Factor w/ 5 levels "Fifth","First",..: 5 5 3 2 5 5 5 4 3 2 ...
 $ x3      : Factor w/ 3 levels "Best","Better",..: 2 3 2 2 3 1 2 3 1 1 ...
 $ x4      : Factor w/ 2 levels "Female","Male": 1 2 2 2 1 1 2 2 1 1 ...
 $ x5      : int  1 67 75 51 84 33 21 80 48 5 ...
 $ x6      : num  21 13.8 30.3 11.9 1.7 13.2 33.9 17 3.4 19.5 ...
 $ x7      : num  0.35 0.85 0.73 0.39 0.47 0.13 0.2 0.12 0.64 0.11 ...
 $ Y       : Factor w/ 2 levels "Green","Yellow": 2 2 1 2 2 2 1 2 2 2 ..
library(adabag) 

data(iris)

iris.adaboost <- boosting(Species~Sepal.Length+Sepal.Width+Petal.Length+
      Petal.Width, data=iris, boos=TRUE, mfinal=10)

# make a 'test' dataframe without the classes, as in the question
iris2 <- iris
iris2$Species <- NULL

# replicates the error
irispred=predict.boosting(iris.adaboost, newdata=iris2)
#Error in `[.data.frame`(newdata, , as.character(object$formula[[2]])) : 
#  undefined columns selected
# first create subsets of iris data for training and testing  
sub <- c(sample(1:50, 25), sample(51:100, 25), sample(101:150, 25))
iris3 <- iris[sub,]
iris4 <- iris[-sub,]

iris.adaboost <- boosting(Species ~ ., data=iris3, mfinal=10)

# works
iris.predboosting<- predict.boosting(iris.adaboost, newdata=iris4)

iris.predboosting$confusion
#               Observed Class
#Predicted Class setosa versicolor virginica
#     setosa         50          0         0
#     versicolor      0         50         0
#     virginica       0          0        50