1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 机器学习 -- 决策树(Ⅱ香农熵)

机器学习 -- 决策树(Ⅱ香农熵)

时间:2021-05-21 21:28:53

相关推荐

机器学习 -- 决策树(Ⅱ香农熵)

一.定义

香农熵定义为信息的期望值。在信息论与概率统计中,熵是表示随机变量不确定性的度量。

假定当前样本集合D中一共有n类样本,第i类样本为Xi,那么Xi的信息定义为:

举例:

若小明和小华下棋,两人势均力敌,则信息熵H = -((1/2) log2 (1/2) + (1/2) log2 (1/2)) = 1bit。

二.计算

香农熵的计算公式为:

香农熵的值越小,则表明D的不纯度越低。

三.代码实现

计算香农熵的python函数实现:

# 计算香农熵def calEnt(dataSet):n = dataSet.shape[0] # 数据集总行数iset = dataSet.iloc[:, -1].value_counts() # 标签的所有类别p = iset / n # 每一类标签所占比ent = (-p * (np.log2(p))).sum()return ent

假设有如下数据集,试着实现计算香农熵的python代码。

代码:

import pandas as pdimport numpy as np# 计算香农熵def calEnt(dataSet):n = dataSet.shape[0] # 数据集总行数iset = dataSet.iloc[:, -1].value_counts() # 标签的所有类别# print(iset)'''no3yes 2Name: fish, dtype: int64'''p = iset / n # 每一类标签所占比'''no0.6yes 0.5Name: fish, dtype: int64'''ent = (-p * (np.log2(p))).sum()return ent# 创建数据集def createDataSet():row_data = {'no surfacing': [1, 1, 1, 0, 0],'flippers': [1, 1, 0, 1, 1],'fish': ['yes', 'yes', 'no', 'no', 'no']}dataSet = pd.DataFrame(row_data)return dataSetif __name__ == "__main__":dataSet = createDataSet()print(calEnt(dataSet))# 0.9709505944546686

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。