决策树是一种树状结构,它的每一个叶节点对应着一个分类,非叶节点对应着在某个属性上的划分,根据样本在该属性上的不同取值将其划分为若干个子集
构造决策树的核心问题是在每一步如何选择适当的属性对样本做拆分
ID3算法
ID3算法基于信息熵来选择最佳测试属性。它选择当前样本集中具有最大信息增益值的属性作为测试属性
用信息增益值度量不确定性:信息增益值越大,不确定性越小
所以ID3算法在每个非叶节点选择信息增益最大的属性做为测试属性
import pandas as pd
filename = '../data/xx.xls'
data=pd.read_excel(filename,index_col=u'序号')
data[data == u'是'] =1
data[data == u'好'] =1
data[data == u'高'] =1
data[data != 1] =-1
x=data.iloc[:,:3].as_matrix().astype(int)
y =data.iloc[:,3].as_matrix().astype(int)
from sklearn.tree import DecisionTreeClassifier as DTC
dtc=DTC(criterion='entropy')
dtc.fit(x,y)
from sklearn.tree import export_graphviz
from sklearn.externals.six import StringIO
with open ('tree.dot','w') as f:
f=export_graphviz(dtc,feature_names = x.columns,out_file = f)