决策树之ID3算法

决策树是一种树状结构,它的每个叶节点对应着一个分类,非叶节点对应着在某个属性上的划分,根据样本在该属性上的不一样取值将其划分为若干个子集web

构造决策树的核心问题是在每一步如何选择适当的属性对样本作拆分算法

ID3算法
ID3算法基于信息熵来选择最佳测试属性。它选择当前样本集中具备最大信息增益值的属性做为测试属性svg

用信息增益值度量不肯定性:信息增益值越大,不肯定性越小测试

因此ID3算法在每一个非叶节点选择信息增益最大的属性作为测试属性excel

在这里插入图片描述

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)