无法从rpart

时间:2016-03-04 00:58:31

标签: r predict rpart

我有一个功能矩阵(在列中),其中最后一列是类标签。观察是成排的。

我在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是我用来选择数据子集的整数,而fold是我用来创建不同子集的矩阵。

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

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

我读了一篇与此相关的帖子,但我没理解原因。 所以,进一步的帮助表示赞赏。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

很难说是肯定的,因为你的例子不可复制,但我确信问题如下:你已经为你的树装上了

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

因此,因变量始终是来自完整 feature$a数据集的feature(显然有3063观察)而不是来自子集feature[fold != k, ]。这没有错误,但不是你想要的树。因此,预测很惊讶,因为newdata只有306个观察值,但由于硬编码{<>>仍然 完整数据集公式中的{1}}。

使用

feature$a

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