用graphviz可视化决策树
1.安装graphviz。
graphviz本身是一个绘图工具软件,下载地址在:http://www.graphviz.org/。如果你是linux,可以用apt-get或者yum的方法安装。如果是windows,就在官网下载msi文件安装。无论是linux还是windows,装完后都要设置环境变量,将graphviz的bin目录加到PATH,比如我是windows,将C:/Program Files (x86)/Graphviz2.38/bin/加入了PATH
2.安装python插件graphviz。
python上有支持graphviz使用 的import graphviz
3.安装python插件pydotplus。
import pydotplus
from IPython.display import Image
这样环境就搭好了,有时候python会很笨,仍然找不到graphviz,这时,可以在代码里面加入这一行:
os.environ["PATH"] += os.pathsep + 'C:/Program Files (x86)/Graphviz2.38/bin/'
注意后面的路劲是你自己的graphviz的bin目录。
4、绘图
#用决策树建模
clf = tree.DecisionTreeClassifier() #默认的选取最优节点的标准是基尼系数,若想使用信息增益则为entropy clf = clf.fit(Xtrain, Ytrain) score = clf.score(Xtest, Ytest) #返回预测的准确度 print(str(clf)) print(score)
#用graphviz会画得决策树(没有解决中文乱码的问题???十分苦恼)
输出PDF至项目文件夹:
import pydotplus import os from sklearn.externals.six import StringIO os.environ["PATH"] += os.pathsep + 'E:\graphviz\bin' dot_data = StringIO() tree.export_graphviz(clf #模型 ,feature_names= feature_name #tez ,class_names=["琴酒","雪莉","贝尔摩德"] #类别名 ,filled=True #由颜色标识不纯度 ,rounded=True #树节点为圆角矩形 ,out_file=dot_data ) graph = pydotplus.graph_from_dot_data(dot_data.getvalue()) graph.write_pdf("wine.pdf") #https://blog.csdn.net/chai_zheng/article/details/78226556
生成tree.dot文件,再用graphviz生成:
#生成tree.dot文件
with open("tree.dot", 'w') as f: f = tree.export_graphviz(clf , feature_names = feature_name # tez , class_names = ["琴酒", "雪莉", "贝尔摩德"] # 类别名 , filled = True # 由颜色标识不纯度 , rounded = True # 树节点为圆角矩形 ,out_file=f)
a)通过graphviz的exe程序导入dot文件生成相对应的png或者pdf文件
b)通过命令行dot -Tpdf tree.dot -o output.pdf,dot -Tpng tree.dot -o output.png将dot文件生成png或者pdf文件