决策树绘制

决策树是机器学习的十大算法之一,可用于解决分类和回归问题。决策树的结构很像二叉树,通过一层一层的节点,来对我们的样本进行分类。决策树算法的可解释性非常的好,通过绘制决策树,我们可以很清楚理地解算法的工作原理,同时也方便向别人进行展示。这一节,我们的重点是画决策树,对于决策树算法的原理以及细节,我们不做深入的探讨。

我们使用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())

绘制好的决策树如图所示:


iris_dtc.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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容