微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我正在学习如何在 R 中编码以进行机器学习。我正在使用 rpart 来完成繁重的工作。然而,当我去绘制我的决策树时,只绘制了一个叶节点“是”。我使用信息增益手动创建了决策树。树应该有三层节点。

decision tree by hand

这是 R 给我的。

decision tree plot from 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”的数据。

play-data.csv

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

解决方法

因为您使用了 .antMatchers("/api/authenticate").permitAll() .antMatchers("/api/**").authenticated() .antMatchers("/management/**").hasAuthority(AuthoritiesConstants.ADMIN) .antMatchers("/auth/*").hasAnyAuthority("ADMIN","USER") 的默认设置,所以您得到了一个具有单个节点的树。文档有点间接。该文档告诉您有一个名为 rpart 的参数,并显示“请参阅 rpart.control”。如果您点击查看 rpart.control 的文档,您将看到有一个名为 control 的参数,它被描述为“节点中必须存在的最小观察数才能尝试进行拆分.”默认值为 20,您总共只有 14 个数据点。它不会分裂根节点。相反,使用 minsplitrpart.control 设置为较低的值(尝试 2)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。