Python笔记:决策树的实现2019-12-13

学习python主要是来了解人工智能、大数据及区块链的底层架构,我们先从人工智能开发,先挑了一个最容易理解的人工智能模型:决策树,从业务场景挑选旅检通关的处罚过程,看看决策树如何归纳一个旅客通关的处罚过程决策过程。

    首先,我们设定罚的金额小于200块,过程提取三个特征值:是否首次违规、违规金额是否超过50、旅客是否大于70岁。处罚结果是放行与处罚。我们提取案例的特征如下,并储存为sample.csv文件:



决策树主要原理是根据特征分类后计算样本的信息熵值,计算决策特征值与结果的关联性,公式如下:


我们不用太纠结里面的数学原理,先看怎么用,代码如下:

import pandas as pd

import numpy as np                                

from sklearn import tree


df = pd.read_csv('sample.csv',encoding="utf-8")            #导入数据源

X = df.drop('处罚结果',axis=1)          #提取特征值 

y = df.处罚结果                           #提取结果


#调用决策树方法计算,返回决策结果clf

clf = tree.DecisionTreeClassifier(max_depth=3)

clf = clf.fit(X, y)          #调用机器学习包 决策树模型


#将决策结果写入lc-is.dot文件

with open("lc-is.dot", 'w',encoding="utf-8") as f:

    f = tree.export_graphviz(clf,

                              out_file=f,

                              max_depth = 3,

                              impurity = True,

                              feature_names = list(X),

                              class_names = ['处罚', '放行'],

                              rounded = True,

                              filled= True )


是不是很简单,流程就是读取文件,提取特征值和结果值,扔进去决策树包里计算,再将结果输出 lc-is.dot文件,但是输出的dot文件还是不够直观,我们要把它画出来,这里需要安装两个包:graphviz和pydot,过程还是比较曲折,使用过程涉及中文乱码,大概过程如下:

一、conda install graphviz

二、conda install pydot

三、在https://graphviz.gitlab.io/下载对应的MSI安装包安装。

四、将路径C:\Program Files (x86)\Graphviz2.38\bin 加入path系统环境变量

五、测试dot.exe 提示正常即可。


使用绘制图形过程如下(涉及中文乱码,搞了很久才解决):

打开lc-is.dot,把里面的 fontname=helvetica 改为 fontname="Microsoft YaHei",然后在开头第一行空了两格,也就是diagraph tree前面加了两个空格,然后就好了…(不要问为什么,我也不知道为什么)

然后调用 graphviz执行绘制图形

dot -Tjpg lc-is.dot -o tree.jpg

结果如下:


你可能感兴趣的:(Python笔记:决策树的实现2019-12-13)