奇怪的predict()函数行为

我目前正在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 addednumeric(0)

作为参考,以下是树的结构:

fancyRpartPlot(model$finalModel)

enter image description here

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


回答:

不幸的是,尽管rpart只在分支中使用了wt变量,但预测仍然需要其他变量存在。使用具有相同列的完整数据集:

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

Max

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注