机器学习实战第三章----决策树

本文介绍了决策树的基本概念,适用于分类和回归问题。主要算法包括CART、ID3和C4.5。重点讲解了使用ID3算法构建决策树的过程,包括计算香农熵、划分数据集和递归构建决策树。信息增益作为选择最佳特征的依据,递归直到所有实例具有相同分类或属性用尽。
摘要由CSDN通过智能技术生成

1.决策树简介

  • 概念:根据数据的属性采用树状结构建立的一种决策模型。
  • 适用:解决分类和回归问题。
  • 常见算法:
    –CART(Classification And Regression Tree),
    –ID3,
    –C4.5

简要理解呢,决策树就是把一堆散乱的数据按照一定的规则构建成直观明了的树形图!这些规则也就是树结构的创建过程就是机器学习的过程(本例采用ID3算法)。

而不同的规则选取方式,会直接影响树形图的简明直观程度。所以如何构建最佳规则成为最重要的问题! 为了有效的衡量当前选取规则是否为最佳规则,引入信息增益的概念。

  • 信息增益 — 最好特征选取的规则
    - 概念:划分数据集前后数据发生的变化成为信息增益。
    - 度量方法:信息熵的改变量

     熵(信息的期望值): H=-Σp(xi)log(p(xi))
     xi的信息熵:    l(xi)=p(xi)log(1/p(xi))
                          =-p(xi)log(p(xi))
    

    信息增益H(D,A)= 原始数据集的信息熵H(D) - 特征A对数据集进行划分后信息熵H(D/A)

2.构造决策树

2.1计算给定数据集的香农熵
#计算数据的香农熵
from math import log

def calcShannonEnt(dataSet):
    numEntris = len(dataSet)        #获取数据集的总条数
    labeCounts = {}                 #创建一个字典
    for feacVec in dataSet:         #获取每一行数据的特征向量
        currentLable = feacVec[-1]  #获取特征向量最后1列的标签
        if currentLable not in labeCounts.keys(): #检测该标签是否存在于字典的关键字keys()中
            labeCounts[currentLable] = 0    # 如果不在,则添加该标签的键值对
        labeCounts[currentLable] += 1       #该标签的值+1
    Ent = 0.0    #熵
    for key in labeCounts:
        prob = float(labeCounts[key])/numEntris  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值