📅  最后修改于: 2023-12-03 15:40:23.247000             🧑  作者: Mango
决策树是一种常见的机器学习算法,通常用于分类问题和回归问题。在决策树中,每个节点代表一个特征,每个叶子代表一种分类或回归结果。在本文中,我们将介绍在Python中查找决策树规则的方法。
一个流行的Python机器学习库是scikit-learn。它包含了许多实用的机器学习算法和工具,包括决策树。要查找决策树规则,我们可以通过以下步骤使用sklearn库:
from sklearn.tree import export_text
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
# 加载鸢尾花数据集
iris = load_iris()
# 创建决策树
clf = DecisionTreeClassifier(random_state=0).fit(iris.data, iris.target)
# 导出决策树规则
tree_rules = export_text(clf, feature_names=iris['feature_names'])
print(tree_rules)
解释:首先,我们从sklearn库中导入了'export_text'和'DecisionTreeClassifier'函数,以及'load_iris'函数用于加载鸢尾花数据集。然后,我们用鸢尾花数据集训练了一个决策树分类器,并将其存储在'clf'变量中。最后,我们使用'export_text'函数将决策树规则导出为文本并打印出来。
输出:
|--- petal length (cm) <= 2.45
| |--- class: 0
|--- petal length (cm) > 2.45
| |--- petal width (cm) <= 1.75
| | |--- petal length (cm) <= 4.95
| | | |--- petal width (cm) <= 1.65
| | | | |--- class: 1
| | | |--- petal width (cm) > 1.65
| | | | |--- class: 2
| | |--- petal length (cm) > 4.95
| | | |--- petal width (cm) <= 1.55
| | | | |--- class: 2
| | | |--- petal width (cm) > 1.55
| | | | |--- petal length (cm) <= 5.45
| | | | | |--- sepal width (cm) <= 3.10
| | | | | | |--- class: 1
| | | | | |--- sepal width (cm) > 3.10
| | | | | | |--- class: 2
| | | | |--- petal length (cm) > 5.45
| | | | | |--- class: 2
| |--- petal width (cm) > 1.75
| | |--- petal length (cm) <= 4.85
| | | |--- sepal width (cm) <= 3.10
| | | | |--- class: 2
| | | |--- sepal width (cm) > 3.10
| | | | |--- class: 1
| | |--- petal length (cm) > 4.85
| | | |--- class: 2
从输出结果可以看到,这是一个具有深度3的决策树,包含7个叶子节点。
另一个流行的Python库是graphviz。它用于绘制各种图表,包括决策树。要查找决策树规则,我们可以通过以下步骤使用graphviz库:
from sklearn.tree import export_graphviz
from IPython.display import SVG
from graphviz import Source
# 导出决策树图形
graph = Source(export_graphviz(clf, out_file=None, feature_names=iris['feature_names'], class_names=iris['target_names'], filled=True))
# 显示决策树图形
display(SVG(graph.pipe(format='svg')))
解释:首先,我们从sklearn库中导入了'export_graphviz'函数,并使用'IPython.display'和'graphviz'库导入了'SVG'和'Source'函数。然后,我们使用'export_graphviz'函数将决策树导出为图形。最后,我们使用'Source'和'SVG'函数显示决策树图形。
输出:
从输出结果可以看到,这是一个与前面相同的决策树,但以图形方式显示出来,看起来更直观。
在Python中,我们可以使用sklearn库和graphviz库来查找决策树规则。使用export_text函数可以将决策树规则导出为文本, Source和SVG函数可以将决策树绘制为图形。