R - 决策树:初学者指南
你好,未来的数据科学家们!今天,我们将使用R语言开启一段激动人心的决策树之旅。别担心你之前从未编过代码——我会一路作为你友好的向导。在本教程结束时,你将能够创建自己的决策树,并且感觉自己像一个真正的数据巫师!
什么是决策树?
在我们深入代码之前,让我们先了解什么是决策树。想象你正在考虑是否去跑步。你可能会问自己:
- 是否在下雨?
- 我是否有足够的时间?
- 我是否精力充沛?
基于你的回答,你做出一个决定。这就是决策树所做的——它基于一系列问题来做出决策!
安装必要的R包
首先,我们需要装备正确的工具。在R中,这些工具被称为包。在我们探索决策树的旅途中,我们将需要两个主要的包:rpart
和 rpart.plot
。
让我们来安装它们:
install.packages("rpart")
install.packages("rpart.plot")
现在,让我们加载这些包:
library(rpart)
library(rpart.plot)
太棒了!你已经迈出了R编程的第一步。给自己一个鼓励!
创建一个简单的数据集
现在我们有了工具,让我们创建一个简单的数据集来操作。想象我们在尝试根据温度和是否是周末来预测某人是否会买冰淇淋。
# 创建一个数据框
ice_cream_data <- data.frame(
temperature = c(68, 85, 72, 90, 60, 78, 82, 75, 68, 71),
is_weekend = c(0, 1, 0, 1, 0, 1, 1, 0, 1, 0),
buy_icecream = c(0, 1, 0, 1, 0, 1, 1, 0, 1, 0)
)
# 查看数据
print(ice_cream_data)
在这个数据集中:
-
temperature
是华氏温度 -
is_weekend
周末为1,工作日为0 -
buy_icecream
买冰淇淋为1,没买为0
构建我们的第一个决策树
现在是激动人心的部分——让我们构建我们的决策树!
# 创建决策树模型
ice_cream_tree <- rpart(buy_icecream ~ temperature + is_weekend,
data = ice_cream_data,
method = "class")
# 绘制树形图
rpart.plot(ice_cream_tree, extra = 106)
让我们分解一下这里发生了什么:
-
rpart()
是我们用来创建决策树的函数。 -
buy_icecream ~ temperature + is_weekend
告诉R我们想要根据temperature
和is_weekend
预测buy_icecream
。 -
data = ice_cream_data
指定我们的数据集。 -
method = "class"
告诉R我们正在进行分类任务(预测一个类别)。 -
rpart.plot()
创建我们树的视觉表示。
当你运行这段代码时,你会看到一个漂亮的树形图。每个节点显示一个决策规则,而叶子节点显示预测。就像一个冰淇淋决策流程图!
理解树
让我们解释一下我们的冰淇淋决策树:
- 顶部节点(根节点)显示第一个分割。它可能是像 "temperature < 76" 这样的规则。
- 如果为真(是),它走向左分支;如果为假(否),它走向右分支。
- 这个过程继续,直到它达到一个叶子节点,然后给出最终预测。
节点中的数字代表:
- 预测的类别(0或1)
- 该类别的概率
- 该节点中观察值的百分比
进行预测
现在我们有了树,让我们用它来进行一些预测!
# 创建新数据
new_data <- data.frame(
temperature = c(70, 95),
is_weekend = c(1, 0)
)
# 进行预测
predictions <- predict(ice_cream_tree, new_data, type = "class")
# 查看预测
print(predictions)
这段代码预测了在70°F的周末和95°F的工作日某人是否会买冰淇淋。
评估模型
为了查看我们的模型表现如何,我们可以使用混淆矩阵:
# 在原始数据上做出预测
predictions <- predict(ice_cream_tree, ice_cream_data, type = "class")
# 创建混淆矩阵
confusion_matrix <- table(Actual = ice_cream_data$buy_icecream, Predicted = predictions)
# 查看混淆矩阵
print(confusion_matrix)
# 计算准确率
accuracy <- sum(diag(confusion_matrix)) / sum(confusion_matrix)
print(paste("准确率:", accuracy))
这给了我们一个快速查看预测正确和错误数量的方法。
结论
恭喜你!你刚刚在R中构建了自己的第一个决策树。从安装包到进行预测,你已经走过了很长的路。记住,熟能生巧,所以不要害怕尝试不同的数据集和参数。
以下是我们使用的方法的快速回顾:
方法 | 描述 |
---|---|
install.packages() | 安装R包 |
library() | 加载已安装的包 |
data.frame() | 创建数据框 |
rpart() | 构建决策树 |
rpart.plot() | 可视化决策树 |
predict() | 使用树进行预测 |
table() | 创建混淆矩阵 |
继续探索,继续学习,最重要的是,在数据科学中享受乐趣!
Credits: Image by storyset