概述
决策树是一个树状结构,它的每一个叶节点对应着一个分类,非叶节点对应在某个属性上的划分,根据样本在该属性上的不同取值将其划分为若干个子集。
构造决策树的核心问题是在每一步如何选择适当的属性对样本进行拆分。对一个分类问题,从已知类标记的训练样本中学习并构造出决策树是一个自上而下、分而治之的过程。
决策树算法的分类
决策树算法 | 算法描述 |
ID3算法 | 核心是在决策树的各级节点上,使用信息增益方法作为属性的选择标准 |
C4.5算法 | 相对于ID3算法,采用信息增益率来选择节点属性。 ID3算法只适用于离散的描述属性;C4.5算法既能够处理离散的描述属性,也可以处理连续的描述属性 |
CART算法 | 一种十分有效的非参数分类和回归方法,通过构建树、修剪树、评估树来构建一个二叉树。当终节点是连续变量时,该树为回归树,当终节点是分类变量时,该树为分类树 |
ID3算法的具体流程:
1、对当前样本集合,计算所有属性的信息增益;
2、选择信息增益最大的属性作为测试属性,把测试属性取值相同的样本划为同一个子样本集;
3、若子样本集的类别属性只含有单个属性,则分支为叶子节点,判断其属性值并标上相应的符号,然后返回调用处;否则对子样本集递归调用本算法。
举例,数据样本如下:
#使用ID3决策树算法预测销量高低
import pandas as pd
import numpy as np
data = pd.read_excel('sales_data.xls',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)
dtc.predict(np.array([[1,1,1],[-1,1,-1]]))
#可视化决策树
#导出的结果是dot文件,需要安装Graphviz转换为pdf或png
from sklearn.tree import export_graphviz
from sklearn.externals.six import StringIO
x = pd.DataFrame(x)
with open("tree.dot",'w') as f:
f = export_graphviz(dtc,feature_names=x.columns,out_file=f)
最后
以上就是饱满小伙为你收集整理的数据挖掘之决策树的全部内容,希望文章能够帮你解决数据挖掘之决策树所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复