1 import pandas as pd 2 import pydotplus 3 from sklearn.externals.six import StringIO #LabelEncoder:将字符串转换为增量值 4 #OneHotEncoder:使用One-of-K算法将字符串转换为整数 5 from sklearn.preprocessing import LabelEncoder, OneHotEncoder 6 from sklearn import tree 7 8 if __name__ == '__main__': 9 with open('lenses.txt', 'r') as fr: #加载文件 10 lenses = [inst.strip().split(' ') for inst in fr.readlines()] #处理文件 11 lenses_target = [] #提取每组数据的类别,保存在列表里 12 for each in lenses: 13 lenses_target.append(each[-1]) 14 print(lenses_target) 15 16 lensesLabels = ['age', 'prescript', 'astigmatic', 'tearRate'] #特征标签 17 lenses_list = [] #保存lenses数据的临时列表 18 lenses_dict = {} #保存lenses数据的字典,用于生成pandas 19 for each_label in lensesLabels: #提取信息,生成字典 20 for each in lenses: 21 lenses_list.append(each[lensesLabels.index(each_label)]) 22 lenses_dict[each_label] = lenses_list 23 lenses_list = [] 24 # print(lenses_dict) #打印字典信息 25 lenses_pd = pd.DataFrame(lenses_dict) # 生成pandas.DataFrame 26 # print(lenses_pd) # 打印pandas.DataFrame 27 le = LabelEncoder() # 创建LabelEncoder()对象,用于序列化 28 for col in lenses_pd.columns: # 为每一列序列化 29 lenses_pd[col] = le.fit_transform(lenses_pd[col]) 30 # print(lenses_pd) #打印编码信息 31 32 clf = tree.DecisionTreeClassifier(max_depth=4) # 创建DecisionTreeClassifier()类 33 clf = clf.fit(lenses_pd.values.tolist(), lenses_target) # 使用数据,构建决策树 34 dot_data = StringIO() 35 tree.export_graphviz(clf, out_file=dot_data, # 绘制决策树 36 feature_names=lenses_pd.keys(), 37 class_names=clf.classes_, 38 filled=True, rounded=True, 39 special_characters=True) 40 graph = pydotplus.graph_from_dot_data(dot_data.getvalue()) 41 graph.write_pdf("tree.pdf") # 保存绘制好的决策树,以PDF的形式存储。
1、数据集(需要数据集的留言)
一共有24组数据,数据的Labels依次是age
、prescript
、astigmatic
、tearRate
、class
,也就是第一列是年龄,第二列是症状,第三列是是否散光,第四列是眼泪数量,第五列是最终的分类标签。数据如下图所示:
2、使用Graphviz可视化决策树
Graphviz的是AT&T Labs Research开发的图形绘制工具,他可以很方便的用来绘制结构化的图形网络,支持多种格式输出,生成图片的质量和速度都不错。它的输入是一个用dot语言编写的绘图脚本,通过对输入脚本的解析,分析出其中的点,边以及子图,然后根据属性进行绘制。是使用Sklearn生成的决策树就是dot格式的,因此我们可以直接利用Graphviz将决策树可视化。
在编写代码之前,需要安装pydotplus和Grphviz
3、安装Graphviz
Graphviz不能使用pip
进行安装,我们需要手动安装,下载地址:http://www.graphviz.org/Home.php
下载好安装包,进行安装,安装完毕之后,需要设置Graphviz的环境变量,在系统变量的Path变量中,添加Graphviz的环境变量,比如Graphviz安装在了D盘的根目录,则添加:D:Graphvizin;
运行代码,在该python文件保存的相同目录下,会生成一个名为tree
的PDF文件,打开文件,可以看到决策树的可视化效果图。