-
2021-11-18 22:19:18
#导入相关的库 import pandas as pd import numpy as np
#导入题目 data=pd.DataFrame({'日志密度':['s','s','l','m','l','m','m','l','m','s'], '好友密度':['s','l','m','m','m','l','s','m','s','s'], '是否使用真实头像':['no','yes','yes','yes','yes','yes','no','no','yes','yes'], '账号是否真实': ['no','yes','yes','yes','yes','yes','no','yes','yes','no']}) data[['日志密度','好友密度','是否使用真实头像','账号是否真实']]
根据下列各种特征来判断微博账号是否真实
#定义计算信息熵的函数:计算Infor(D) def infor(data): a = pd.value_counts(data) / len(data) return sum(np.log2(a) * a * (-1)) #定义计算信息增益的函数:计算g(D|A) def g(data,str1,str2): e1 = data.groupby(str1).apply(lambda x:infor(x[str2])) p1 = pd.value_counts(data[str1]) / len(data[str1]) #计算Infor(D|A) e2 = sum(e1 * p1) return infor(data[str2]) - e2
更多相关内容 -
python计算信息熵、信息增益和信息增益率
2020-04-04 22:13:36在这里,我将用python代码计算信息熵、信息增益和信息增益率。 以下代码基于python、numpy和pandas。 实现上述计算的代码一共11行。在这里,我将用python代码计算信息熵、信息增益和信息增益率。
以下代码基于python、numpy和pandas。
没时间看的同学,可以直接跳到总结。
往期博客:
信息熵
什么是信息熵,怎么计算,一图盖之。
首先
import pandas as pd import numpy as np
然后我们在此设置一个演示用的大学生贷款数据集。
data = pd.DataFrame({'学历':['专科','专科','专科','专科','专科','本科','本科','本科','本科','本科','研究生','研究生','研究生','研究生','研究生'], '婚否':['否','否','是','是','否','否','否','是','否','否','否','否','是','是','否'], '是否有车':['否','否','否','是','否','否','否','是','是','是','是','是','否','否','否'], '收入水平':['中','高','高','中','中','中','高','高','很高','很高','很高','高','高','很高','中'], '类别':['否','否','是','是','否','否','否','是','是','是','是','是','是','是','否']}) data[['学历','婚否','是否有车','收入水平','类别']]
数据集如下图所示:
定义函数
定义函数这步我大多是参考和借鉴了下面这篇文章,所以我这篇文章也就不挂原创了。
python详细步骤计算信息增益#定义计算信息熵的函数:计算Infor(D) def infor(data): a = pd.value_counts(data) / len(data) return sum(np.log2(a) * a * (-1))
参数说明
“data”就是我们要输入的数据集。
实例运行
计算信息熵主要是为了后两步做准备,所以这一步就不实例操作了。
信息增益
什么是信息增益,怎么计算,一图盖之。
定义函数
#定义计算信息增益的函数:计算g(D|A) def g(data,str1,str2): e1 = data.groupby(str1).apply(lambda x:infor(x[str2])) p1 = pd.value_counts(data[str1]) / len(data[str1]) #计算Infor(D|A) e2 = sum(e1 * p1) return infor(data[str2]) - e2
参数说明
“str1”就是代表图中的“A”。
“str2”就是代表图中的“D”。
实例运行
拿给出的实例试验一下:
g(data,'学历','类别')
得出如下结果:
0.08300749985576883
信息增益率
什么是信息增益率,怎么计算,一图盖之。
定义函数
#定义计算信息增益率的函数:计算gr(D,A) def gr(data,str1,str2): return g(data,str1,str2)/infor(data[str1])
实例运行
拿给出的实例试验一下:
gr(data,'学历','类别')
得出如下结果:
0.05237190142858302
总结
三者的函数总结如下:
#定义计算信息熵的函数:计算Infor(D) def infor(data): a = pd.value_counts(data) / len(data) return sum(np.log2(a) * a * (-1)) #定义计算信息增益的函数:计算g(D|A) def g(data,str1,str2): e1 = data.groupby(str1).apply(lambda x:infor(x[str2])) p1 = pd.value_counts(data[str1]) / len(data[str1]) #计算Infor(D|A) e2 = sum(e1 * p1) return infor(data[str2]) - e2 #定义计算信息增益率的函数:计算gr(D,A) def gr(data,str1,str2): return g(data,str1,str2)/infor(data[str1])
“data”就是我们要输入的数据集。
“str1”就是代表图中的“A”。
“str2”就是代表图中的“D”。
其实信息增益率比信息增益更准确。
-
【结合实例】信息增益的计算
2017-11-22 09:53:09介绍信息增益之前,首先需要介绍一下熵的概念,这是一个物理学概念,表示“一个系统的混乱程度”。系统的不确定性越高,熵就越大。假设集合中的变量X={x1,x2…xn},它对应在集合的概率分别是P={p1,p2…pn}。那么这个...参考文章:
https://www.cnblogs.com/qcloud1001/p/6735352.html
http://blog.csdn.net/lixuemei504/article/details/7278748
http://blog.csdn.net/u013164528/article/details/44359677
信息增益原理介绍
介绍信息增益之前,首先需要介绍一下熵的概念,这是一个物理学概念,表示“一个系统的混乱程度”。系统的不确定性越高,熵就越大。假设集合中的变量
X={x1,x2…xn}
,它对应在集合的概率分别是P={p1,p2…pn}
。那么这个集合的熵表示为:举一个的例子:对游戏活跃用户进行分层,分为高活跃、中活跃、低活跃,游戏A按照这个方式划分,用户比例分别为20%,30%,50%。游戏B按照这种方式划分,用户比例分别为5%,5%,90%。那么游戏A对于这种划分方式的熵为:
同理游戏B对于这种划分方式的熵为:
游戏A的熵比游戏B的熵大,所以游戏A的不确定性比游戏B高。用简单通俗的话来讲,游戏B要不就在上升期,要不就在衰退期,它的未来已经很确定了,所以熵低。而游戏A的未来有更多的不确定性,它的熵更高。
介绍完熵的概念,我们继续看信息增益。为了便于理解,我们还是以一个实际的例子来说明信息增益的概念。假设有下表样本
!
第一列为QQ,第二列为性别,第三列为活跃度,最后一列用户是否流失。我们要解决一个问题:性别和活跃度两个特征,哪个对用户流失影响更大?我们通过计算信息熵可以解决这个问题。
按照分组统计,我们可以得到如下信息:
其中Positive为正样本(已流失),Negative为负样本(未流失),下面的数值为不同划分下对应的人数。那么可得到三个熵:
整体熵:
性别熵:
性别信息增益:
同理计算活跃度熵:
活跃度信息增益:
活跃度的信息增益比性别的信息增益大,也就是说,活跃度对用户流失的影响比性别大。在做特征选择或者数据分析的时候,我们应该重点考察活跃度这个指标。
使用Hive SQL实现信息熵的计算
从表2中我们不难发现,在计算信息熵和信息增益之前,需要对各维度做汇总计数,计算各公式中出现的分母。Hive SQL中,cube能帮助我们很快的做汇总计算,话不多说直接上代码:
SELECT t1.feature_name, SUM((ea_all/es)*EA) as gain, SUM(NVL(-(ea_all/ES)*log2(ea_all/es),0)) as info,--计算信息增益率的分母 SUM((ea_all/es)*EA)/SUM(NVL(-(ea_all/es)*log2(ea_all/es),0)) as gain_rate--信息增益率计算 FROM ( SELECT feature_name, feature_value, ea_all, --Key Step2 对于整体熵,要记得更换符号,NVL的出现是防止计算log2(0)得NULL case when feature_value='-100' then -(NVL((ea_positive/ea_all)*log2(ea_positive/ea_all),0)+NVL((ea_negative/ea_all)*log2(ea_negative/ea_all),0)) else (NVL((ea_positive/ea_all)*log2(ea_positive/ea_all),0)+NVL((ea_negative/ea_all)*log2(ea_negative/ea_all),0)) end as EA FROM ( SELECT feature_name, feature_value, SUM(case when is_lost=-100 then user_cnt else 0 end) as ea_all, SUM(case when is_lost=1 then user_cnt else 0 end) as ea_positive, SUM(case when is_lost=0 then user_cnt else 0 end) as ea_negative FROM ( SELECT feature_name, --Key Step1 对feature值和label值做汇总统计,1、用于熵计算的分母,2、计算整体熵情况 case when grouping(feature_value)=1 then '-100' else feature_value end as feature_value, case when grouping(is_lost)=1 then -100 else is_lost end as is_lost, COUNT(1) as user_cnt FROM ( SELECT feature_name,feature_value,is_lost FROM gain_caculate )GROUP BY feature_name,cube(feature_value,is_lost) )GROUP BY feature_name,feature_value ) )t1 join ( --Key Step3信息增益计算时,需要给出样本总量作为分母 SELECT feature_name,COUNT(1) as es FROM gain_caculate GROUP BY feature_name )t2 on t1.feature_name=t2.feature_name GROUP BY t1.feature_name
数据表结构如下:
关键步骤说明:
KeyStep1:各特征的熵计算
KeyStep2:各feature下的信息增熵
信息增益计算结果:
结束语:
以上为信息熵计算过程的SQL版本,其关键点在于使用cube实现了feature和label所需要的汇总计算。需要的同学只需要按照规定的表结构填入数据,修改SQL代码即可计算信息增益。文中如有不足的地方,还请各位指正。
参考文档
[1] 算法杂货铺——分类算法之决策树(Decision tree)
http://www.cnblogs.com/leoo2sk/archive/2010/09/19/decision-tree.html
[2] c4.5为什么使用信息增益比来选择特征?
-
python手动计算信息增益
2021-02-05 20:52:20python手动计算信息增益2019年5月23日 17:49 by wst算法实践概念阐述对于决策树, 以前看了很多遍, 但是总感觉摸不着它.里面有个很重要的概念: 信息增益.今天就来手动实现下, 实现之前先说下它的概念(这个定义里好多...python手动计算信息增益
2019年5月23日 17:49 by wst
算法实践
概念阐述
对于决策树, 以前看了很多遍, 但是总感觉摸不着它.
里面有个很重要的概念: 信息增益.
今天就来手动实现下, 实现之前先说下它的概念(这个定义里好多名词都有经验二字,是因为都是根据样本得到的).
特征 A 对训练数据集D的信息增益 g(D,A) 定义为: 集合D的经验熵 H(D) 与特征A给定条件下D 的经验条件熵 H(D|A) 之差, 即:
g(D,A) = H(D) - H(D|A)
通俗的说就是: 在一个条件给定情况下,信息不确定性减少的程度!
在决策树生成过程中,每次选择信息增益最大的那个特征作为节点.
举例说明
以买瓜为例,夏天到了, 大家都比较爱吃西瓜, 但是怎么样才能买个好瓜呢? 要不然回家媳妇(女朋友)该说了, 你什么情况? 买个西瓜都买不好. 为了避免挨说, 还是得学好决策树, 搞清楚信息增益是怎么回事.
数据如下: (下载方式: 链接: https://pan.baidu.com/s/1Gr1TLaVwuwi9lO6BcdjoAQ 提取码: wr9j )
编号
色泽
根蒂
敲声
纹理
脐部
触感
好瓜
1
青绿
蜷缩
浊响
清晰
凹陷
硬滑
是
2
乌黑
蜷缩
沉闷
清晰
凹陷
硬滑
是
3
乌黑
蜷缩
浊响
清晰
凹陷
硬滑
是
4
青绿
蜷缩
沉闷
清晰
凹陷
硬滑
是
5
浅白
蜷缩
浊响
清晰
凹陷
硬滑
是
6
青绿
稍蜷
浊响
清晰
稍凹
软粘
是
7
乌黑
稍蜷
浊响
稍糊
稍凹
软粘
是
8
乌黑
稍蜷
浊响
清晰
稍凹
硬滑
是
9
乌黑
稍蜷
沉闷
稍糊
稍凹
硬滑
否
10
青绿
硬挺
清脆
清晰
平坦
软粘
否
11
浅白
硬挺
清脆
模糊
平坦
硬滑
否
12
浅白
蜷缩
浊响
模糊
平坦
软粘
否
13
青绿
稍蜷
浊响
稍糊
凹陷
硬滑
否
14
浅白
稍蜷
沉闷
稍糊
凹陷
硬滑
否
15
乌黑
稍蜷
浊响
清晰
稍凹
软粘
否
16
浅白
蜷缩
浊响
模糊
平坦
硬滑
否
17
青绿
蜷缩
沉闷
稍糊
稍凹
硬滑
否
假设我们已经构建好了决策树,现在买了一个西瓜,它的特点是纹理是清晰,根蒂是硬挺的瓜,你来给我判断一下是好瓜还是坏瓜,恰好,你构建了一颗决策树,告诉他,没问题,我马上告诉你是好瓜,还是坏瓜?
根据决策树的算法步骤,我们可以得到下面的图示过程:
到达叶子结点后,从而得到结论。我这个瓜的判断是坏瓜(要挨说了)。
这里我们重点来说一下,在树每一层的生长过程中,如何选择特征!每一层选择好了特征之后,树也就自然建好了
第一个节点(每个节点都是如此)该怎么选呢? 根据我们的结论: 选择信息增益最大的那个特征作.
根节点下正例(好瓜)占 8/17,反例占 9/17 ,根结点的信息熵为
现在可选的特征有:{色泽,根蒂,敲声,纹理,脐部,触感},我们分别计算他们的信息增益:
色泽特征有3个可能的取值:{青绿,乌黑,浅白}
D1(色泽=青绿) = {1, 4, 6, 10, 13, 17},正例 3/6,反例 3/6 -- 6,3,3
D2(色泽=乌黑) = {2, 3, 7, 8, 9, 15},正例 4/6,反例 2/6 -- 6,4,2
D3(色泽=浅白) = {5, 11, 12, 14, 16},正例 1/5,反例 4/5 -- 5,1,4
3 个分支结点的信息熵
那么我们可以知道属性色泽的信息增益是:
同理,我们可以求出其它属性的信息增益,分别如下:
根据后文的代码,计算过程为(里面的数字,通过excel筛选即可得到):
# 色泽
In [21]: h(8,9,[[6,3,3],[6,4,2],[5,1,4]])
Out[21]: 0.10812516526536531
# 根蒂
In [22]: h(8,9,[[8,5,3],[7,3,4],[2,0,2]])
Out[22]: 0.14267495956679288
# 敲声
In [23]: h(8,9,[[5,2,3],[2,0,2],[10,6,4]])
Out[23]: 0.14078143361499584
# 纹理
In [24]: h(8,9,[[3,0,3],[9,7,2],[5,1,4]])
Out[24]: 0.3805918973682686
# 脐部
In [25]: h(8,9,[[7,5,2],[4,0,4],[6,3,3]])
Out[25]: 0.28915878284167895
# 触感
In [26]: h(8,9,[[5,2,3],[12,6,6]])
Out[26]: 0.006046489176565584
于是我们找到了信息增益最大的属性纹理,它的Gain(D,纹理) = 0.381最大。
于是我们选择的划分属性为“纹理”
如下:
于是,我们可以得到了三个子结点,对于这三个子节点,我们可以递归的使用刚刚找信息增益最大的方法进行选择特征属性,
比如:D1(纹理=清晰) = {1, 2, 3, 4, 5, 6, 8, 10, 15},下次可选的属性集合{色泽、根蒂、敲声、脐部、触感},基于 D1各属性的信息增益,分别求得如下:
手动编码计算:
In [1]: import pandas as pd
In [2]: import numpy as np
In [3]: import math
In [14]: def lg(v):
...: if v==0:
...: return 0
...: return -v*math.log(v,2)
...:
...:
In [15]: def h(f_1, f_0, matrix):
...: a = f_1+f_0
...: d = lg(f_1/a) + lg(f_0/a)
...: m = 0
...: for lis in matrix:
...: m += lis[0]/a * (lg(lis[1]/lis[0]) + lg(lis[2]/lis[0]))
...: return d-m
...:
...:
In [16]: h(7,2,[[4,3,1],[4,3,1],[1,1,0]])
Out[16]: 0.04306839587828004
In [17]: h(7,2,[[5,5,0],[3,2,1],[1,0,1]])
Out[17]: 0.45810589515712374
In [18]: h(7,2,[[2,2,0],[1,0,1],[6,5,1]])
Out[18]: 0.33085622540971754
In [19]: h(7,2,[[5,5,0],[1,0,1],[3,2,1]])
Out[19]: 0.45810589515712374
In [20]: h(7,2,[[3,1,2],[6,6,0]])
Out[20]: 0.45810589515712374
代码说明:
f_1 -- 好瓜个数, f_0 -- 坏瓜个数, matrix -- 里面有多行, 每一行代表一个属性值的情况: 此属性值个数、此属性值下好瓜的个数、此属性值下坏瓜的个数。
比如色泽属性,在纹理清晰的情况下,有7个好瓜,2个坏瓜。同时:
色泽青绿的有4个,这4个中有3个好瓜、1个坏瓜;
色泽乌黑的有4个,这4个中有3个好瓜、1个坏瓜;
色泽浅白的有1个,这1个是好瓜;
此时matrix为:
[ [4, 3, 1],
[4, 3, 1],
[1, 1, 0]]
函数调用方式为:h(7,2,[[4,3,1],[4,3,1],[1,1,0]]), 值为0.043
同理,可以算出来根蒂的信息增益为:0.458;敲声:0.331,脐部:0.458,触感:0.458
于是我们可以选择特征属性为根蒂,脐部,触感三个特征属性中任选一个(因为他们三个相等并最大),其它俩个子结点同理,然后得到新一层的结点,再递归的由信息增益进行构建树即可
我们最终的决策树如下:
参考:
作者:忆臻
链接:https://www.zhihu.com/question/22104055/answer/161415527
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Comment
×
Name
Email address
Comment
Close
Submit
Not Comment!
-
熵、信息增益、信息增益率
2021-03-29 17:23:36一、熵 (1)原理 初中物理我们对“熵”这个东西... 2、计算信息增益率 进步程度的信息增益率更高一些,所以在构建决策树的时候,优先选择通过这种方式,在选取节点的过程中,我们可以降低取值较多的属性的选取偏好。 -
Python代码实现信息熵、信息增益、信息增益率的计算
2021-02-20 21:58:02今天在课堂上给大家讲到信息熵、信息增益和信息增益率的时候,很多同学都不理解,对数学公式很敬畏,其实不然,接下来我就使用Python原生代码实现信息熵、信息增益、信息增益率的计算!!! 1.信息熵: 1.1 信息熵... -
机器学习 - [源码实现决策树小专题]决策树中,信息增益、信息增益率计算以及最佳特征挑选的Python实现
2021-03-16 17:49:00信息增益与信息增益率计算的Python实现 阅读本文前推荐先阅读:混杂度数值度量的Python编程实现 阅读本文前推荐先阅读:决策树算法中数据集的划分 导读:决策树是一种基于信息的学习算法。在决策树算法中需要不断地... -
信息熵、信息增益与信息增益率
2019-05-10 11:16:41信息熵、信息增益与信息增益率信息熵、信息增益与信息增益率信息熵(Information Entropy)信息增益(Information Gain)信息增益率(Information Gain Ratio) 信息熵、信息增益与信息增益率 信息熵(Information Entropy)... -
信息增益率
2019-07-05 17:41:13信息熵,条件熵,信息增益参考博文:https://blog.csdn.net/u010916338/article/details/91432832 如下表所示:满足什么情况才去玩高尔夫 ? Day Temperatrue Outlook Humidity Windy PlayGolf? ... -
【机器学习】决策树特征选择准则 信息增益、信息增益率、基尼系数的计算及其python实现
2020-12-16 09:59:40信息增益 1.问题引入 首先,我们引入需进行学习的数据集,如下, 接着摆在我们面前的是首先选择哪个特征,其次选择哪个特征,…,最后选择哪个特征。(就是先选择好的特征,再选择坏的特征) 问题引入: 怎么知道... -
决策树——信息增益、信息增益率、基尼指数
2021-03-18 14:43:27决策树——信息增益、信息增益率、基尼指数背景——信息量的表示信息熵信息增益增益率基尼系数 这是机器学习课上面教的几个概念,在这里记一下笔记,如果大家发现我的理解有误,请指正,谢谢。 背景——信息量的表示... -
【数据挖掘】信息增益的计算
2022-04-25 10:41:00二、如何计算信息增益三、习题❤️❤️❤️忙碌的敲代码也不要忘了浪漫鸭! 前言 ✨你好啊,我是“ 怪& ”,是一名在校大学生哦。 主页链接:怪&的个人博客主页 ☀️博文主更方向为:课程学习知识、作业... -
机器学习之决策树算法中:信息熵、信息增益、信息增益率和基尼指数的计算
2019-09-23 19:59:14决策树算法中:信息熵、信息增益、信息增益率和基尼指数的计算 节选自周志华《机器学习》P75-P79页 文末附上本人手工计算过程,方便理解 ... -
决策树(ID3、C4.5与CART)——从信息增益、信息增益率到基尼系数
2021-09-01 19:22:491、ID3与C4.5采用信息熵作为选择的基础,CART选择基尼纯度作为选择的基础。 2、ID3和C4.5只用于分类,CART可以用于分类与回归。其中I 3、ID3和C4.5可以是多叉树,CART是二叉树。 4、ID3只能使用离散特征,C4.5和CART... -
机器学习---熵,信息增益,信息增益率
2021-12-13 10:15:41熵 熵在信息论中被用来度量信息量,熵越大,所含的有用信息越多,其不确定性也就越大;熵越小,有用信息越少,确定性也就越大。 决策树中,用熵来表示样本集的不纯度...信息增益 计算得到熵作为衡量样本集合不纯度的指 -
机器学习——有监督——决策树(分类树)相关原理及sklearn实现(信息熵、基尼系数、信息增益、特征重要...
2020-04-14 22:37:54(7)计算信息增益率 首先,分支度 则信息增益率 然后可进一步计算其他各字段的GR值,并选取GR值最大的字段进行切分。 2、连续变量处理手段 在C4.5中,同样还增加了针对连续变量的处理手段。如果输入特征字段是连续... -
信息增益、信息增益率、Gini
2015-12-08 15:42:101、 C4.5继承了ID3的优点,并改进了:(1)使用信息增益率来选择属性,克服了用信息增益选择属性时偏向值多的不足;(2)在构树过程中进行剪枝;(3)能够完成对连续属性的离散化处理;(4)能够对不完整数据进行... -
python详细步骤计算信息增益
2018-08-25 16:39:25信息增益(gain):表示得知特征X的信息使得类Y的信息不确定性减少的程度。例如属性a的信息增益为: 信息增益就是等于某个属性的熵减去该属性的条件信息熵。...#自定义一份数据,分别计算信息熵,... -
【ML笔记】信息增益、Gini、信息增益率
2017-08-03 15:50:44信息增益、Gini、信息增益率 -
决策树——ID3算法存在的问题实例详解,以及C4.5算法信息增益率的计算实例
2019-08-24 10:17:45那么如果以ID为一个节点,那么最后的每个叶子节点中只有一个数据,那么每个叶子节点的熵值都为0,那么此时的信息增益将达到最大,但是这显然不是我们想要的分类结果,这样的分类结果就好像最终得到的每一个分类数据... -
决策树算法熵与信息增益(Python3实现)
2018-07-17 17:30:49目录 1、熵、条件熵与信息增益 (1)熵(entropy) (2)条件熵(conditional entropy) (3)信息增益(information gain) ...信息增益比(增益率) 1、熵、条件熵与信息增益 (1)熵(entropy) (... -
决策树模型结构 信息增益与信息增益率
2019-06-07 15:42:571.决策树模型结构 决策树算法是一种监督学习算法;...(2)C4.5算法:使用信息增益率进行特征选择,克服了信息增益选择特征的时候偏向于特征个数较多的不足。 (3)CART算法:分类回归树,既可以用于分类,也可以用于... -
信息增益的计算
2018-06-01 11:04:56信息增益有的也成为信息获取量(Information Gain)。 这里主要介绍在决策树中的使用。...这里以特征A为例,特征A的信息增益计算方式如下: 计算整个信息(就是计算是否买电脑)的熵: Infor(D)=... -
c4.5基于信息增益比的多分类决策树python实现
2017-12-08 10:57:18c4.5基于信息增益比的多分类决策树python实现,包含数据集,运行结果以字典的形式进行存储 -
树模型中分裂特征选择标准--信息熵,信息增益,信息增益率的计算
2018-03-25 17:06:34信息增益率:信息增益/属性的熵(偏向类别数目少的属性)4.基尼值:1-集和各类别值的概率平方和(随机抽取两个样本其类别不一致的概率) 1 - sum(pi**2)5.基尼系数:按照属性a划分后各子集的加权基尼和ID3:判别式... -
信息增益与信息增益率详解
2015-03-17 23:45:17熟悉决策树算法的人都知道ID3以及C4.5两种算法,当然也非常清楚信息增益以及信息增益率两个概念。 信息增益:节点M的信息熵E1与其全部子节点信息熵之和E2的差。 信息增益率:节点信息增益与节点分裂信息度量的比值。... -
基于信息增益的决策树(python)
2017-11-16 22:22:55自己用Python3.6.1 写的基于信息增益的决策树,信息熵函数、信息增益函数、多数表决函数、产生决策树的函数写的都比较清楚,直接下载放在python环境中就能出结果,数据用的是周志华老师的《机器学习》的表4.3。