R 中 rpart 的 prp() 函数仅绘制单个叶节点。为什么?

The prp() function from rpart in R only plots a single leaf node. Why?

我正在学习如何使用 R 编写机器学习代码。我正在使用 rpart 来完成繁重的工作。但是,当我去绘制我的决策树时,只绘制了一个叶节点 'yes'。我已经使用信息增益自己手动创建了决策树。树应该有三级节点。

这是 R 给我的。

这是我的 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' 的数据。

数据读入正确,选择和变异功能似乎也很好。所以我不知道是什么给了。我试着用谷歌搜索这个问题,但只找到了一个关于它的帖子,没有我能理解的简明答案。

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