决策树可视化(sklearn、graphviz)——python数据分析与挖掘实战 5-2 决策树预测销售量高低

Yolanda ·
更新时间:2024-11-11
· 639 次阅读

若按照书上代码运行会出现如下报错(这是因为代码在截取数据时将属性值转为了矩阵):

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 空格 文件所在路径),并输入代码,如图所示:
原创文章 1获赞 1访问量 31 关注 私信 展开阅读全文
作者:yyj_me



决策 graphviz 实战 python数据分析 销售 决策树 可视化 Python

需要 登录 后方可回复, 如果你还没有账号请 注册新账号