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,是,少,是,是,高

posted @ 2018-08-07 19:26  小武aj  阅读(2838)  评论(0编辑  收藏  举报