python绘制决策树图片

背景

w3cshool机器学习篇最后一个章节是决策树的简单入门教学,我在那里拷贝代码运行时报错,显示绘制不出决策树图片

思路

python编译报错无非三种,语法错误,没有装库,路径没对。w3cshool的语句语法错误应该不会犯,那么我看了一下报错信息,我本地环境欠缺了两个内容。

1.pydotplus库,我们使用pip install pydotplus即可安装该库

2.安装上述库文件依然报错,因为我们还需要一个绘制决策树图片的程序,对,是程序,而不是库,所以我们得安装对应的程序,否则这个错误【pydotplus.graphviz.InvocationException: GraphViz's executables not found】就会让你抓狂,程序下载路径是这个【https://graphviz.org/download/】,大家选好自己电脑对应的版本下载安装即可。

3.对代码稍作改动,在引入所有包之后,还需要在代码中加入GraphViz程序的安装路径变量

代码

import pandas
from sklearn import tree
import pydotplus
from sklearn.tree import DecisionTreeClassifier
import matplotlib.pyplot as plt
import matplotlib.image as pltimg
import os     
#引入Graphviz绘制决策树图片的程序的地址
os.environ["PATH"] += os.pathsep + 'D:/Graphviz/bin'

#如需制作决策树,所有数据都必须是数字。

df = pandas.read_csv("shows.csv")

#将字符串更改为数值
d={'UK':0,'USA':1,'N':2}
df['Nationality']=df['Nationality'].map(d)
d={'YES':1,'NO':0}
df['Go']=df['Go'].map(d)

#分开特征列和目标列
features=['Age','Experience','Rank','Nationality']

X=df[features]
y=df['Go']

print(X)
print(y)

#创建决策树
dtree=DecisionTreeClassifier()
dtree=dtree.fit(X,y)
data=tree.export_graphviz(dtree,out_file=None,feature_names=features)
graph=pydotplus.graph_from_dot_data(data)
graph.write_png("mydecisiontree.png")

img=pltimg.imread("mydecisiontree.png")
imgplot=plt.imshow(img)
plt.show()

其中csv的文件内容如下

Age Experience Rank Nationality Go
36 10 9 UK NO
42 12 4 USA NO
23 4 6 N NO
52 4 4 USA NO
43 21 8 USA YES
44 14 5 UK NO
66 3 7 N YES
35 14 9 UK YES
52 13 7 N YES
35 5 9 N YES
24 3 5 USA NO
18 3 7 UK YES
45 9 9 UK YES

结果

1.控制台输出

 python绘制决策树图片_第1张图片

 2.决策树图片

python绘制决策树图片_第2张图片

 

你可能感兴趣的:(决策树,python,机器学习)