首页 > 解决方案 > R 中 rpart 的 prp() 函数仅绘制单个叶节点。为什么?

问题描述

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

手动决策树

这是R给我的。

来自 rpr() 的决策树图

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

播放数据.csv

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

标签: rmachine-learningdata-miningdecision-treerpart

解决方案


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


推荐阅读