我有一个功能矩阵(在列中),其中最后一列是类标签。观察是成排的。
我在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.
我读了一篇与此相关的帖子,但我没理解原因。 所以,进一步的帮助表示赞赏。 提前谢谢。
答案 0 :(得分:1)
很难说是肯定的,因为你的例子不可复制,但我确信问题如下:你已经为你的树装上了
rpart(feature$a ~ feature$m, data = feature[fold != k, ], ...)
因此,因变量始终是来自完整 feature$a
数据集的feature
(显然有3063观察)而不是来自子集feature[fold != k, ]
。这没有错误,但不是你想要的树。因此,预测很惊讶,因为newdata
只有306个观察值,但由于硬编码{<>>仍然仍 完整数据集公式中的{1}}。
使用
feature$a
更容易阅读,更少打字,并且应该解决您观察到的问题。