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('\t') 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:\Graphviz\bin;
運行代碼,在該python文件保存的相同目錄下,會生成一個名為tree的PDF文件,打開文件,可以看到決策樹的可視化效果圖。

