一、基本概要
决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。由于这种决策分支画成图形很像一棵树的枝干,故称决策树。在机器学习中,决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系。Entropy = 系统的凌乱程度,使用算法ID3, C4.5和C5.0生成树算法使用熵。这一度量是基于信息学理论中熵的概念。以下使用的是ID3算法。
缺点:
1)对连续性的字段比较难预测。
2)对有时间顺序的数据,需要很多预处理的工作。
3)当类别太多时,错误可能就会增加的比较快。
4)一般的算法分类的时候,只是根据一个字段来分类。
二、构建数据
def createDataSet():
dataSet=[[1,1,'yes'],
[1,1,'yes'],
[1,0,'no'],
[0,1,'no'],
[0,1,'no'],]
labels=['no surfacing','flippers']
return dataSet,labels
from math import log
def calcShannonEnt(dataSet):
"""计算信息熵"""
numEntries=len(dataSet)#计算实例总数
labelCounts={
}
for featVec in dataSet:#对dataSet的每一个元素进行处理
currentLabel=featVec[-1]#将dataSet的每一个元素的最后一个元素选择出来
if currentLabel