【发布时间】:2013-04-16 21:11:38
【问题描述】:
我正在尝试在 R 中使用随机森林对一些 kaggle 数据进行分类,但每当我尝试使用我创建的模型时,我都会收到以下错误。
Error in predict.randomForest(fit, newdata = test, type = "class") :
Type of predictors in new data do not match that of the training data
我完全不知道这个错误的原因,谷歌并没有提供太多帮助。任何帮助或见解将不胜感激。下面给出了简单的代码 sn-p 及其对 kaggle 问题之一的响应。
fit = randomForest(as.factor(IsBadBuy) ~ VehicleAge + WheelTypeID + Transmission + WarrantyCost + VehOdo + Auction,
data=training, importance=TRUE, do.trace=100, keep.forest=TRUE)
prediction = predict(fit, newdata=test, type='class')
t = table(observed=test[, 'IsBadBuy'], predict=prediction)
【问题讨论】:
-
昨天没有回答相同问题的原因是没有代码或数据。怎样才能告诉您我们所看到的只是错误文本的类型存在哪些问题?
-
发布
head(training.set)和head(test.set) -
错误消息的含义与它的含义完全相同:您的训练数据中至少有一个变量的类型与您的测试数据中的等效变量不匹配。例如,也许 VehicleAge 在训练中是数字,但在测试中是一个因素。找到哪一个的唯一方法是检查
str(training)和str(test)。 -
this 的副本? @joran:不幸的是,这并不是那么简单,因为当因子包含
NA作为级别(workaround)时会出现错误。 -
@joran:对因素的帮助表明这样做是完全有效的。毕竟,“分类变量”的语义意味着一个级别的关联值根本不应该发挥作用。我花了 15 分钟来验证“新数据中的预测器类型确实 与训练数据的预测器类型相匹配”,然后又用了 15 分钟来运行调试器并了解发生了什么。就我的口味而言,足以称其为错误。
标签: r error-handling random-forest kaggle