1.决策树的优缺点
- 优点: 计算复杂度不高,结果易理解,对中间值缺失不敏感,可处理不相关的特征数据
- 缺点: 过度匹配
- 适用: 数值型,标称型
2.决策树的步骤
- 收集数据
- 准备数据,仅适用于标称型,数值型需作离散化处理
- 分析数据,检查图形与预期是否相符
- 训练算法,构造树的数据结构
- 测试算法,使用经验树计算错误率
- 使用算法
3.信息增益
- 在划分数据集前后信息发生的变化叫做信息增益
- 通过计算将特征值划分数据集所获得的信息增益量,最高的信息增益就是最好的选择
from math import log
def calcShang(dataSet):
num = len(dataSet)
labelCounts = {}
for f in dataSet:
cLabel = f[-1]
if cLabel not in labelCounts.keys():
labelCounts[cLabel] = 0
labelCounts[cLabel] += 1
shang = 0.0
for key in labelCounts:
prob = float(labelCounts[key])/num
shang -=prob*log(prob,2)
return shang
- 测试信息熵计算函数calcShang()
def createDataSet():
dataSet = [
[1,1,'yes'],
[1,1,'yes'],
[1,0,'no'],
[0,1,'no'],
[0,1,'no']
]
labels = ['no suifacing','flippers']
return dataSet,labels
myDat,labels=createDataSet()
myDat[0][-1]='maybe'
print(myDat)
shang = calcShang(myDat)
print(shang)