美文网首页
决策树(三)计算香农熵

决策树(三)计算香农熵

作者: 敢梦敢当 | 来源:发表于2017-07-11 19:39 被阅读0次

<h1>计算给定数据的信息熵<h1>
我们的数据集如下表所示:

这里写图片描述
根据这张表,我们使用Python来构建我们的数据集。
def createDataSet():
    dataSet = [[1,1,'yes'],
              [1,1,'yes'],
              [1,0,'no'],
              [0,1,'no'],
              [0,1,'no']] # 我们定义了一个list来表示我们的数据集,这里的数据对应的是上表中的数据

    labels = ['no surfacing','flippers']

    return dataSet, labels

其中第一列的1表示的是不需要浮出水面就可以生存的,0则表示相反。 第二列同样是1表示有脚蹼,0表示的是没有。
在构建完数据集之后我们需要计算数据集的香农熵。 根据香农熵的定义可以知道:

这里写图片描述
根据这个公式我们来编写相应的代码。(注意:我们是计算每个类别的香农熵,也就是鱼类还是非鱼类的香农熵。在这我们的数据集当中我们用’yes’表示是鱼类,用‘no’表示非鱼类)
# 代码功能:计算香农熵
from math import log #我们要用到对数函数,所以我们需要引入math模块中定义好的log函数(对数函数)

def calcShannonEnt(dataSet):#传入数据集
# 在这里dataSet是一个链表形式的的数据集
    countDataSet = len(dataSet) # 我们计算出这个数据集中的数据个数,在这里我们的值是5个数据集
    labelCounts={} # 构建字典,用键值对的关系我们表示出 我们数据集中的类别还有对应的关系
    for featVec in dataSet: 通过for循环,我们每次取出一个数据集,如featVec=[1,1,'yes']
        currentLabel=featVec[-1] # 取出最后一列 也就是类别的那一类,比如说‘yes’或者是‘no’
        if currentLabel not in labelCounts.keys():
            labelCounts[currentLabel] = 0
        labelCounts[currentLabel] += 1

    print labelCounts # 最后得到的结果是 {'yes': 2, 'no': 3}


    shannonEnt = 0.0 # 计算香农熵, 根据公式

    for key in labelCounts:
        prob = float(labelCounts[key])/countDataSet
        shannonEnt -= prob * log(prob,2)


    return shannonEnt

香农熵越高,则说明混合的数据越多,
得到熵之后我们就可以按照获取最大信息增益的方法划分数据集。

相关文章

  • 决策树(三)计算香农熵

    计算给定数据的信息熵 我们的数据集如下表所示: 其中第一列的1表示的是不需要浮出水面就可以生存的,0则表示相反。 ...

  • 4.6 应用实例

    4.6.1 香农熵的计算 在学习决策树时,最重要的步骤是构建决策树。其中,最重要的步骤是根据属性划分数据集,其中先...

  • 《机器学习入门》笔记 - 决策树

    决策树 计算香农熵 建一组假数据 划分数据集 寻找最好的划分方式 寻找最多数的标签 创建决策树 使用文本注解绘制节...

  • 机器学习:决策树算法代码详细注释笔记

    计算给定数据集的香农熵 按照给定特征划分数据集 选择数据集最好的分类属性 获取分类集中概率最大的分类 创建决策树递...

  • 机器学习_决策树

    决策树 计算经验熵和信息增益 计算经验熵 输出: 计算信息增益 注:splitDataSet函数是用来选择各个特征...

  • 机器学习-面试总结

    决策树问题 1)各种熵的计算熵、联合熵、条件熵、交叉熵、KL散度(相对熵) 熵用于衡量不确定性,所以均分的时候熵最...

  • 信息熵(香农熵)、条件熵、信息增益的简单了解

    信息熵(香农熵) 1948年,香农提出了 “信息熵(entropy)”的概念信息熵是消除不确定性所需信息量的度量,...

  • 香农熵

    香农熵,又称信息熵,熵,可以用来代表某数据集合的不一致性。熵的值越高,则代表数据集的不一致性越高。 熵与概率的关系...

  • 如何使用R计算香农熵?

    前言 1.1948 年,香农提出了“信息熵”(shāng); 2.信息量的度量就等于不确定性的多少。即:要搞懂一个...

  • 信息熵+交叉熵+KL散度

    熵的本质是香农信息量,被用于描述一个系统中的不确定性。 在决策树算法中的信息熵: 在反向传播算法中衡量两个分布和差...

网友评论

      本文标题:决策树(三)计算香农熵

      本文链接:https://www.haomeiwen.com/subject/dwgmhxtx.html