R中的rpart包的prp()函数为什么只绘制一个叶节点?

我在学习如何使用R语言进行机器学习。我使用rpart来进行主要的计算。然而,当我尝试绘制决策树时,只显示了一个叶节点’yes’。我已经手动使用信息增益创建了决策树。这个树应该有三层的节点。

手工绘制的决策树

这是R给我的结果。

使用prp()绘制的决策树

这是我的R代码。

library(FSelector)library(rpart)library(rpart.plot)library(caret)library(dplyr)library(data.tree)library(caTools)table <- read.csv("play-data.csv")table <- select(table, Outlook, Temperature, Humidity, Windy, Play)table <- mutate(table, Outlook = factor(Outlook), Temperature = factor(Temperature), Humidity = factor(Humidity), Play = factor(Play))tree <- rpart(Play ~ Outlook + Temperature + Humidity + Windy, data = table)prp(tree)

这是’play-data.csv’中的数据。

play-data.csv

数据读取正确,选择和变异函数也运行正常。所以我不知道问题出在哪里。我尝试在谷歌上搜索这个问题,但只找到一个相关的讨论,没有找到我能理解的简洁答案。


回答:

你得到一个单节点树是因为你使用了rpart的默认设置。文档的描述有点间接。文档提到有一个名为control的参数,并说“参见rpart.control。”如果你查看rpart.control的文档,你会看到有一个名为minsplit的参数,它被描述为“在节点中必须存在的观测值的最小数量,以便尝试进行分裂。”默认值是20,而你总共只有14个数据点。它不会分裂根节点。相反,使用rpart.controlminsplit设置为较低的值(试试2)。

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中创建了一个多类分类项目。该项目可以对…

发表回复

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