机器学习实战——决策树算法代码详解

本文介绍了在学习机器学习过程中,作者对决策树算法的理解和实践。通过阅读李航的《统计学习方法》并推导原理后,作者试图用Python实现决策树。遵循《机器学习实战》的代码,但发现其注释不足,于是添加了详细的解释。文章重点讲解了ID3算法,基于最大信息增益选择特征,并探讨了代码中涉及的多层字典嵌套操作。
摘要由CSDN通过智能技术生成

机器学习实战——决策树算法代码详解

刚开始学习机器学习,在熟悉python语法之后,看了李航的统计学习方法决策树的原理,自己推导了一遍,想用代码实现,但是无从下手。
跟着机器学习实战的代码写了一遍,这本书的代码注释不多,不易理解,这里添加了理解后的详细注释。一起学习!

ID3算法,根据最大信息增益原理选择最优特征。
下面附代码:

from math import log
import operator

def calcShannonEnt(dataSet):
    """计算给定数据集的熵"""
    numEnttries = len(dataSet)#计算数据集实例总数
    labelCounts = {
   }#保存各分类实例的数目
    for featVec in dataSet:
        currentLable = featVec[-1]
        if currentLable not in labelCounts.keys():
            labelCounts[currentLable] = 0
        labelCounts[currentLable] += 1
    shannonEnt = 0.0
    for key in labelCounts:
        prob = float(labelCounts[key])/numEnttries#计算各分类的概率
        shannonEnt -= prob * log(prob,2)#熵
    return shannonEnt

def splitDataSet(dataSet,axis,value):#axis:第axis个特征,value:第axis个特征的值
    """按照给定特征划分数据集"""
    retDataSet = []
    for featVec in dataSet:
        if featVec[axis] == value:#将需要提取的特征数据集提取出来
            reducedFeatVec = featVec[:axis]
            reducedFeatVec.
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值