第 6 章 决策树 决策树
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
决策树是一种通用的机器学习算法,既能执行分类任务,也能执行回归任务,甚至还能执行多输出任务。它们是强大的算法,能够拟合复杂的数据集。例如,在第 2 章中,你在加州住房数据集上训练了一个DecisionTreeRegressor 模型,完全拟合(实际上是过度拟合)。
决策树也是随机森林的基本组成部分(见第 7 章),而随机森林是当今最强大的机器学习算法之一。
在本章中,我们将首先讨论如何使用决策树进行训练、可视化和预测。然后,我们将介绍 Scikit-Learn 使用的 CART 训练算法,并探讨如何对树进行正则化并将其用于回归任务。最后,我们将讨论决策树的一些局限性。
决策树的训练和可视化
为了了解决策树,让我们构建一棵决策树,看看它是如何进行预测的。下面的代码会在虹膜数据集(参见第 4 章)上训练DecisionTreeClassifier :
fromsklearn.datasetsimportload_irisfromsklearn.treeimportDecisionTreeClassifieriris=load_iris(as_frame=True)X_iris=iris.data[["petal length (cm)","petal width (cm)"]].valuesy_iris=iris.targettree_clf=DecisionTreeClassifier(max_depth=2,random_state=42)tree_clf.fit(X_iris,y_iris)
首先,您可以使用export_graphviz() 函数输出名为iris_tree.dot 的图形定义文件,将训练好的决策树可视化:
fromsklearn.treeimportexport_graphvizexport_graphviz(tree_clf,out_file="iris_tree.dot",feature_names=["petal length (cm)","petal width (cm)"],class_names=iris.target_names,rounded=True,filled=True)
然后,您可以使用graphviz.Source.from_file() 在 Jupyter 笔记本中加载和显示文件:
fromgraphvizimportSourceSource.from_file("iris_tree.dot")
Graphviz是一款开源图形可视化软件包。它还包含一个dot 命令行工具,用于将.dot文件转换为 PDF 或 PNG 等多种格式。
第一个决策树如图 6-1 所示。
图 6-1. 虹膜决策树
进行预测
让我们来看看图 6-1中的树是如何进行预测的。假设您发现了一朵鸢尾花,并想根据它的花瓣对其进行分类。您可以从根节点(深度 0,位于顶部)开始:这个节点会询问花瓣的长度是否小于 2.45 厘米。如果是,则向下移动到根节点的左侧子节点(深度 1,左侧)。在这种情况下,它是一个叶节点
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access