我正在使用派对包在 R 中构建 CART 回归树模型,但是当我尝试将模型与测试数据集应用时,我收到错误消息说级别不匹配。
在过去的一周里,我一直在阅读论坛上的帖子,但仍然找不到解决我问题的正确方法。所以我在这里使用我编造的假例子重新发布这个问题。有人可以帮助解释错误消息并提供解决方案吗?
我的训练数据集有大约 1000 条记录,测试数据集有大约 150 条记录。两个数据集中都没有 NA 或空白字段。
我在派对包下使用 ctree 的 CART 模型是:
mytree<- ctree(Rate~Bank+Product+Salary, data=data_train)
数据训练示例:
Rate Bank Product Salary
1.5 A aaa 100000
0.6 B abc 60000
3 C bac 10000
2.1 D cba 50000
1.1 E cca 80000
数据测试示例:
Rate Bank Product Salary
2.0 A cba 80000
0.5 D cca 250000
0.8 E cba 120000
2.1 C abc 65000
levels(data_train$Bank) : A, B, C, D, E
levels(data_test$Bank): A,D,E,C
我尝试使用以下代码设置为同一级别:
>is.factor(data_test$Bank)
TRUE
(Made sure Bank and Products are factors in both datasets)
>levels(data_test$Bank) <-union(levels(data_test$Bank), levels(data_train$Bank))
> levels(data_test$product)<-union(levels(data_test$product),levels(data_train$product))
但是,当我尝试对测试数据集运行预测时,出现以下错误:
> fit1<- predict(mytree,newdata=data_test)
Error in checkData(oldData, RET) :
Levels in factors of new data do not match original data
我也尝试了以下方法,但它改变了我的测试数据集的字段......:
级别(data_test$Bank)<-级别(data_train$Bank)
data_test 表已更改:
Rate Bank(altered) Bank (original)
2.0 A A
0.5 B D
0.8 C E
2.1 D C