我目前正在学习 Coursera 的“实用机器学习”课程,并且在使用 predict 函数时遇到了一些奇怪的行为。已经提出的问题是训练一棵树,然后做出一些预测。所以我不在这里发布答案,我已经更改了用于该问题的数据集。代码如下:
rm(list = ls())
library(rattle)
data(mtcars)
mtcars$vs = as.factor(mtcars$vs)
set.seed(125)
model = train(am ~ ., method = 'rpart', data = mtcars)
print(model)
fancyRpartPlot(model$finalModel)
sampleData = mtcars[1,]
sampleData[1,names(sampleData)] = rep(NA, length(names(sampleData)))
sampleData[1, c('wt')] = c(4)
predict(model, sampleData[1,], verbose = TRUE)
在上面的代码中,有两个主要部分。第一个构建树,第二个(从哪里sampleData
开始)创建一个小样本数据集以应用模型。为了确保我具有与原始数据完全相同的结构,我只需复制训练数据集的第一行,然后将所有列设置为NA
. 然后,我只将数据放入决策树需要的列中(在本例中为wt
变量)。
当我执行上面的代码时,我得到以下结果:
Number of training samples: 32
Number of test samples: 0
rpart : 0 unknown predictions were added
numeric(0)
作为参考,下面是树的结构:
fancyRpartPlot(model$finalModel)
有人可以帮我理解为什么该函数没有返回我提供predict
的预测值吗?sampleData