我正在尝试运行训练模型后和交叉验证后得到的预测函数。我正在预测变量" classe。"
测试数据与训练数据具有相同的预测变量名称,但行数较少(20个观测值)。测试数据中的所有预测变量都是数字的(就像训练数据一样)。但无论我使用什么型号,它似乎都会造成问题。
型号:
rf <- train(train$classe ~., method="rf", data=train,
trControl = trainControl(method = "oob"))
我试过了:
predict(rf, testing1)
我得到了
Error in predict.randomForest(modelFit, newdata) : newdata has 0 rows
然后我试了
gbm <- train(train$classe ~., method="gbm", data=train,
trControl = trainControl(method = "cv", number=5))
predict(gbm, testing1)
我得到了
Error in aperm.default(psum, c(2, 1, 3)) :
'perm' is of wrong length 3 (!= 2)
我的测试数据看起来像这样,唯一的区别是最后一个变量表示&#34;问题id&#34;,而在训练集中,最后一个变量表示&#34; classe&#34;:
> str(testing1)
'data.frame': 20 obs. of 86 variables:
$ roll_belt : num 123 1.02 0.87 125 1.35 -5.92 1.2 0.43 0.93 114 ...
$ pitch_belt : num 27 4.87 1.82 -41.6 3.33 1.59 4.44 4.15 6.72 22.4 ...
$ total_accel_belt : num 20 4 5 17 3 4 4 4 4 18 ...
$ kurtosis_roll_belt : num NA NA NA NA NA NA NA NA NA NA ...
$ kurtosis_picth_belt : num NA NA NA NA NA NA NA NA NA NA ...
... # all numeric variables
$ magnet_forearm_y : num 419 791 698 783 -787 800 284 -619 652 723 ...
$ magnet_forearm_z : num 617 873 783 521 91 884 585 -32 469 512 ...
$ problem_id : num 1 2 3 4 5 6 7 8 9 10 ...
任何帮助表示赞赏!!
答案 0 :(得分:2)
我解决了问题 - 测试数据中列中的某些值是“NA”,而在训练数据中它们是空白的。两个文件如何读入R之间存在一些不一致。修复该问题后,predict()现在可以正常工作。
答案 1 :(得分:0)
对于预测,我知道列名必须完全相同。如果即使最后一个关闭,那么这可能会导致问题。