r - Predict() 函数的奇怪行为

标签 r machine-learning r-caret cart-analysis

我目前正在学习 Coursera 的“实用机器学习”类(class),并且在预测函数中遇到了一些奇怪的行为。提出的问题是训练一棵树,然后做出一些预测。因此,我不会在这里发布答案,我已经更改了用于该问题的数据集。代码如下:

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)

enter image description here

有人可以帮助我理解为什么 predict 函数没有返回我提供的 sampleData 的预测值吗?

最佳答案

不幸的是,即使rpart在分割中只使用了wt变量,预测仍然需要其他变量存在。使用包含示例列的数据集:

> predict(model, mtcars[1,])
[1] 0.8571429

最大

关于r - Predict() 函数的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24142116/

相关文章:

machine-learning - 高效计算SVM对偶损失

r - 在插入符包中的训练模型中使用 poly( 函数导致数据帧错误

r - 插入符号中的 AUPRC 和 PRROC 之间的区别

r - ggpubr:在标签中显示显着性水平(*** 或 n.s.)而不是 p 值

r - lmer 模型中的分组因子规范无效

machine-learning - 预测 Bash 命令的深度学习算法

python - 如何在 sklearn 中对不平衡数据集进行交叉验证

r - 当 R 中少一行时,使用 diff() 函数添加新列

r - 如何在 R 中使用 ggplot 有条件地填充区域

r - `caret' 中的混淆矩阵和归一化互信息 (NMI) : Linear discriminant analysis, 朴素贝叶斯和分类树