r - R 中 rpart 的 prp() 函数仅绘制单个叶节点。为什么?
问题描述
我正在学习如何在 R 中编写机器学习代码。我正在使用 rpart 来完成繁重的工作。但是,当我绘制决策树时,只绘制了一个叶节点“是”。我使用信息增益手动创建了决策树。树应具有三个级别的节点。
这是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
“See rpart.control”的参数。如果您单击 rpart.control 的文档,您将看到有一个名为的参数,该参数minsplit
被描述为“节点中必须存在的最小观察数,以便尝试拆分”。默认值为 20,您总共只有 14 个数据点。它不会分裂根节点。相反,使用rpart.control
设置minsplit
为较低的值(尝试 2)。
推荐阅读
- ffmpeg - 我如何在 ffmpeg 中实现绿屏效果,以便使用 ffmpeg 将图像放入具有白色背景的视频中?
- java - Spring Boot 中动态属性的选项
- java - 如何显示 Room 数据库中的数据而不是哈希码?(安卓工作室,Java)
- c - 将字符串写入字符串但在其旁边的代码
- c++ - 用派生类初始化(分配)基类 shared_ptr
- ruby-on-rails - 在 AWS Cloud 9 上预览 rails 服务器:VFS 连接不存在 [仅限 Firefox]
- javascript - 如何在 Solidity 中构建 HTML 解决方案
- javascript - 循环后返回对象中未定义值的函数
- java - 在android studio中单击时如何使复选框可编辑
- docker - Docker-compose:显示有效配置?