学习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
结果如下: