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