我在学习如何使用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.control
将minsplit
设置为较低的值(试试2)。