使用rpart构建决策树预测时遇“object Rm not found”错误求助
解决决策树预测时的"object not found"错误
我来帮你拆解下问题根源,你其实误解了predict()函数的输入逻辑:
错误原因
你训练的决策树模型classifier是基于公式Medv ~ Rm + Lstat构建的,这意味着模型必须依赖**Rm和Lstat这两个特征变量**才能生成预测结果。但你调用predict()时传入的是test_set[3](也就是目标列Medv),这时候模型找不到它需要的输入特征,自然会抛出"object not found"的错误。
你想要预测的是test_set里的Medv值,但正确逻辑应该是:给模型传入test_set中的特征列(Rm和Lstat),让模型根据这些特征去推算对应的Medv,而不是反过来传入目标列。
修正后的代码
把预测部分的代码改成以下任意一种形式即可:
方式1:明确指定特征列
# 传入测试集的Rm和Lstat列,让模型预测对应的Medv y_pred = predict(classifier, newdata = test_set[, c("Rm", "Lstat")])
方式2:排除目标列快速获取特征
# 直接排除第三列(Medv),剩下的就是模型需要的特征 y_pred = predict(classifier, newdata = test_set[-3])
额外注意事项
- 如果你的
Medv是连续数值(比如房价这类回归任务),不需要加type='class'参数——这个参数是给分类任务(目标为类别变量)用的。如果确实是分类任务,记得先把Medv转为因子类型:train_set$Medv <- factor(train_set$Medv)。 - 可以用
head(test_set)再确认下数据集列名是否正确,确保Rm、Lstat、Medv三个列名无误。
内容的提问来源于stack exchange,提问作者A-nak Wannapaschaiyong
相关产品推荐
相关产品推荐

