决策树是机器学习的十大算法之一,可用于解决分类和回归问题。决策树的结构很像二叉树,通过一层一层的节点,来对我们的样本进行分类。决策树算法的可解释性非常的好,通过绘制决策树,我们可以很清楚理地解算法的工作原理,同时也方便向别人进行展示。这一节,我们的重点是画决策树,对于决策树算法的原理以及细节,我们不做深入的探讨。
我们使用iris数据集,它有150个样本,5个特征。接下来我们就以iris数据集为例,来进行决策树的绘制。
iris数据集链接:
链接:https://pan.baidu.com/s/1YCyvnNH1R56RnUDl3KxKMg
提取码:yfoh
下面是代码部分:
#导入数据分析的常用工具包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
#读取iris数据集,具体在写代码的过程中使用df.head()查看数据集
columns = ['petal_length','petal_width','calyx_length','calye_width','category']
df = pd.read_csv('D:\\Py_dataset\\iris.data',sep = ',',names = columns)
#对数据集中的非数值型特征进行转换
df['category'].unique()
[out]:array(['Iris-setosa', 'Iris-versicolor', 'Iris-virginica'], dtype=object)
category_map = {'Iris-setosa':0,'Iris-versicolor':1,'Iris-virginica':2}
df['category'] = df['category'].map(category_map)
#建立决策树模型
from sklearn.tree import DecisionTreeClassifier
Y = df['category']
X = df.drop('category',axis = 1)
dtc = DecisionTreeClassifier(max_depth = 2)
dtc.fit(X,Y)
#对于训练好的决策树模型进行可视乎
from sklearn import tree
#把模型以及要用到的特征输入进来,转化为dot_data类型
dot_data = \
tree.export_graphviz(
dtc,
out_file = None,
feature_names = df.columns.tolist()[:4],
filled = True,
impurity = False,
rounded = True
)
import pydotplus
graph = pydotplus.graph_from_dot_data(dot_data)
graph.get_nodes()[4].set_fillcolor("#FFF2DD")
from IPython.display import Image
Image(graph.create_png())
绘制好的决策树如图所示:

主要节点说明:
在根节点上,我们可以看到有三个值。我们的分类标准是calyx_length <= 2.45,此时的样本数量为150,value = [50,50,50]意思是我们的[0,1,2]三类样本的数量分别有50个。
在叶子结点中,我们可以看到有两个值。samples是此时该节点的样本数量,value是此时各个类别的数量。如value = [50,0,0],它表明该节点的样本都是0这个类别,已经将0类样本与其他类完全区分开了。如value = [0,49,5],它表明该节点有49个1类样本,5个2类样本,可以看到它并没完全的区分开1类和2类样本。此处我们只演示如何绘制决策树,并不考虑模型的分类效果。
绘制决策树小结:
1.绘制决策树的过程可以作为一个模板,我们在使用的时候,只需要传入自己的参数。
2.需要提前安装好两个扩展包。
2.1 安装graphviz可视化包,该包需要下载,下载好以后需要添加到路径当中。
下载graphviz-2.38.msi,然后将Graphviz安装目录下的bin文件添加到Path环境变量中。[graphviz下载链接]('https://graphviz.gitlab.io/_pages/Download/Download_windows.html
')
2.2 pip install pydotplus; pip install pydot; pip install graphviz
网友评论