《机器学习实战》笔记03~决策树算法

1.决策树的优缺点

  1. 优点: 计算复杂度不高,结果易理解,对中间值缺失不敏感,可处理不相关的特征数据
  2. 缺点: 过度匹配
  3. 适用: 数值型,标称型

2.决策树的步骤

  1. 收集数据
  2. 准备数据,仅适用于标称型,数值型需作离散化处理
  3. 分析数据,检查图形与预期是否相符
  4. 训练算法,构造树的数据结构
  5. 测试算法,使用经验树计算错误率
  6. 使用算法

3.信息增益

  1. 在划分数据集前后信息发生的变化叫做信息增益
  2. 通过计算将特征值划分数据集所获得的信息增益量,最高的信息增益就是最好的选择
# 计算给定数据集的香农熵
from math import log
def calcShang(dataSet):
    # 传入数据集,获取实例总数
    num = len(dataSet)
    # 为所有可能的分类创建字典
    labelCounts = {}
    for f in dataSet:
        cLabel = f[-1]
        # 如果当前Key不存在则扩展字典项
        if cLabel not in labelCounts.keys():
            labelCounts[cLabel] = 0
        labelCounts[cLabel] += 1
    shang = 0.0
    for key in labelCounts:
        prob = float(labelCounts[key])/num
        # 香农公式,log()以2为底prob的对数
        shang -=prob*log(prob,2)
    return  shang
  1. 测试信息熵计算函数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)

猜你喜欢

转载自blog.csdn.net/wxfghy/article/details/80381365
今日推荐