Python簡單實現決策樹


 1 __author__ = '糖衣豆豆'
 2 #決策樹
 3 import pandas as pda
 4 fname="~/coding/python/data/lesson.csv"
 5 dataf=pda.read_csv(fname,encoding="gbk")
 6 x=dataf.iloc[:,1:5].as_matrix()
 7 y=dataf.iloc[:,5].as_matrix()
 8 for i in range(0,len(x)):
 9     for j in range(0,len(x[i])):
10         thisdata=x[i][j]
11         if(thisdata=="" or thisdata=="" or thisdata==""):
12             x[i][j]=int(1)
13         else:
14             x[i][j]=int(-1)
15 for i in range(0,len(y)):
16     thisdata=y[i]
17     if(thisdata==""):
18         y[i]=int(1)
19     else:
20         y[i]=int(-1)
21 #容易錯的地方:直接使用
22 #正確的做法:轉化好格式,將x,y轉化為數據框,然后再轉化為數組並指定格式
23 xf=pda.DataFrame(x)
24 yf=pda.DataFrame(y)
25 x2=xf.as_matrix().astype(int)
26 y2=yf.as_matrix().astype(int)
27 
28 #建立決策樹
29 from sklearn.tree import DecisionTreeClassifier as DTC
30 dtc=DTC(criterion="entropy")
31 dtc.fit(x2,y2)
32 #直接預測決策樹
33 import numpy as npy
34 x3=npy.array([[1,-1,-1,1],[1,1,1,1],[-1,1,-1,1]])
35 rst=dtc.predict(x3)
36 print(rst)
37 #可視化決策樹
38 from sklearn.tree import export_graphviz
39 from sklearn.externals.six import StringIO
40 
41 with open("~/Downloads/dtc.dot","w") as file:
42     export_graphviz(dtc,feature_names=["combat","num","Promotion","datum"],out_file=file)


lesson.csv的日志如下

序號,實戰,課時數,是否促銷,是否提供配套資料,銷量
1,是,多,是,否,高
2,否,少,是,是,低
3,是,少,是,否,低
4,是,多,否,否,低
5,是,少,否,是,高
6,是,多,是,是,高
7,否,多,是,否,低
8,否,少,是,是,高
9,是,多,是,否,高
10,否,少,否,否,低
11,是,少,否,否,高
12,否,多,是,否,低
13,是,少,否,是,高
14,是,多,否,是,高
15,否,少,是,是,低
16,是,多,否,否,低
17,是,多,否,否,低
18,是,多,否,是,高
19,否,多,是,否,高
20,是,少,否,是,低
21,是,多,否,否,高
22,否,少,是,是,低
23,否,少,否,否,低
24,否,多,是,是,高
25,是,少,否,是,高
26,是,多,否,否,低
27,是,多,是,是,高
28,否,少,否,否,低
29,是,少,是,是,高


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM