无法从 rpart 预测

cannot predict from rpart

我有一个特征矩阵(按列),其中最后一列是 class 标签。观察结果在行中。

我在 R 中使用 rpart 在我的数据子集上构建决策树,并使用其余数据进行预测测试。学习树的代码是

fTree <- rpart(feature$a ~ feature$m, data = feature[fold != k, ],
  method = "class", parms = list(split = "gini"))

测试代码为

predFeature <- predict(fTree, newdata = feature[fold == k, ],
  type = "class")

其中 k 是我用来 select 数据子集的整数,而 fold 是我用来创建不同子集的矩阵。

我收到一条警告消息,我知道你们中的一些人已经知道了:

'newdata' had 306 rows but variables found have 3063 rows.

我读了一个与此相关的 post 但我没能理解原因。 因此,我们将不胜感激进一步的帮助。 提前致谢。

很难确定,因为您的示例不可重现,但我很确定问题如下:您已经为您的树安装了

rpart(feature$a ~ feature$m, data = feature[fold != k, ], ...)

因此,因变量总是 feature$a 来自 完整 feature 数据集(显然有 3063 个观察值)和 不是子集 feature[fold != k, ] 中的 。这可以正常工作,但不是您想要适合的树。因此,预测令人惊讶,因为 newdata 只有 306 个观测值,但这些观测值未被使用,但 still full 数据集到期到公式中的硬编码 feature$a

正在使用

rpart(a ~ m, data = feature[fold != k, ], ...)

更容易阅读,更少打字,应该可以解决您观察到的问题。