Python计算信息熵、条件熵、信息增益例子

from  https://www.jianshu.com/p/25c8bbd1bfa0

1、计算信息熵

首先我们知道信息熵公式为:

假设在没给任何天气信息的情况下,根据历史数据,得到今天打球的概率为9/14,不打概率为5/14,根据信息熵公式计算得到

python实现

2、计算条件熵和信息增益

假定我们根据天气来决定是否打球,四大特征依次为:天气,温度,湿度,风度,如下图所示

Python计算信息熵、条件熵、信息增益例子_第1张图片

首先计算特征为”天气”下的条件熵和信息增益,由上图知道

(1)天晴时:

打球概率0.4,不打概率0.6(可能温度特别高,没法打)

计算信息熵为:0.971

(2)阴天时:

打球概率1.0 (天气凉爽打球爽歪歪)

计算信息熵为:0 (100%打球无悬念,毫无信息量)

(3)下雨:

打球概率0.6,不打概率0.4(下雨反而更挡不住一颗打球的心,哈哈)

计算信息熵为:0.971

2.1、计算条件熵:

条件熵公式如下:

根据历史统计数据,outlook取值为天晴阴天下雨的概率分别是5/14、4/14、5/14,由上面知道对应的信息熵分别0.971,0,0.971,,因此条件熵为(这里X=x为特征值outlook):0.693

2.2、计算信息增益

信息增益 = 信息熵 - 条件熵

由上面知道了信息熵为0.940和特征为天气下的条件熵为0.693,计算得到

gain(outlook) = 0.940-0.693 = 0.247。

同样可以计算出gain(temperture)=0.029,gain(humidity)=0.152,gain(windy)=0.048。

我们发现gain(outlook)最大(即outlook在第一步使系统的信息熵下降的最快),所以决策树的根节点就去outlook。其余子节点的求法和根节点类似,所以决策树算法是一个递归算法。

 

3、关于python中log函数

(1)math中不止有math.Log(m,n)用法

 

(2)math库中还有如下用法,没有底数默认为e

Python计算信息熵、条件熵、信息增益例子_第2张图片

 

(3)numpy用法,没有底数默认为e

Python计算信息熵、条件熵、信息增益例子_第3张图片

你可能感兴趣的:(python,机器学习)