决策树可视化(sklearn、graphviz)——python数据分析与挖掘实战 5-2 决策树预测销售量高低
程序员文章站
2022-05-02 20:29:57
...
若按照书上代码运行会出现如下报错(这是因为代码在截取数据时将属性值转为了矩阵):
AttributeError: 'numpy.ndarray' object has no attribute 'columns'
解决办法:
方法一:添加代码:x=pd.DataFrame(x)
方法二:将代码:
x=data.iloc[:,:3].as_matrix().astype(int)
y=data.iloc[:,3].as_matrix().astype(int)
改成:
x=data.iloc[:,:3].astype(int)
y=data.iloc[:,3].astype(int)
总体代码:
#引入第三方库及数据读取
import pandas as pd
filename='../data/sales_data.xls'
data=pd.read_excel(filename,index_col=u'序号')
#变量赋值,数据是类别标签,先转换为数据
data[data==u'好']=1
data[data==u'是']=1
data[data==u'高']=1 #用1来表示“好”“是”“高”这三个属性
data[data!=1]=-1 #用-1来表示“坏”“否”“低”
x=data.iloc[:,:3].as_matrix().astype(int)
#筛选切片,选出所有行,第0至第2列的数据赋值给x
y=data.iloc[:,3].as_matrix().astype(int)
#选出所有行,第3列的数据赋值给y
#建立模型并训练模型
from sklearn.tree import DecisionTreeClassifier as DTC
dtc=DTC(criterion='entropy')
dtc.fit(x,y)
#可视化决策树
x=pd.DataFrame(x)
from sklearn.tree import export_graphviz
from sklearn.externals.six import StringIO
with open("tree.dot",'w') as f:
f=export_graphviz(dtc,feature_names=x.columns,out_file=f)
#运行以上代码后,在存放实验数据的路径下会生成一个tree.dot文件
一、决策树可视化(利用graphviz)
1.选择用记事本打开tree.dot文件,添加以下两行代码用来设置字体:
edge[fontname=“SimHei”];
node[fontname=“SimHei”];
2.将文件另存为utf-8格式,文件名仍为tree.dot
3.在官网上下载graphviz的安装包,安装之后将Path变量添加进路径为安装路径的新变量
4.生成pdf:在命令行输入代码:
dot -Tpdf tree.dot -o tree.pdf
dot -Tjpg tree.dot -o tree.jpg
dot -Tpng tree.dot -o tree.png
具体的3种做法:
(1)打开Anaconda Powershell或者Prompt等(任意一个黑窗口),在命令行中,将路径改为tree.dot所在的路径(先转到文件所在的盘,再输入cd 空格 文件所在路径),并输入代码,如图所示:
(2)在tree.dot所在文件夹的空白处,按住shift,点击鼠标右键,然后点击’选择在此处打开Powershell窗口’,此时的路径为tree.dot所在的路径,直接输入代码:dot -Tpdf tree.dot -o tree.pdf即可得到pdf
(3)在tree.dot所在的文件夹下,选中tree.dot文件,点击上方的路径,全选路径,直接输入cmd,然后回车即可直接跳到命令行窗口,然后输入代码即可
二、实验结果