如何计算熵
- 两种特殊情况
最好的情况: 样本都是同类, 则Entropy值为0
最差的情况: 样本均匀分布在所有类中, 则Entropy值为1 - 现有数据集
Grade | Bumpiness | Speed_Limit? | Speed |
---|---|---|---|
steep | bumpy | yes | slow |
steep | smooth | yes | slow |
flat | bumpy | no | fast |
steep | smooth | no | fast |
在这个数据集中, 什么因素可以决定当前应该加速还是减速.
- Speed部分统计
s->代表slow
f->代表fast
则数据集缩写为: [ssff]
则slow的概率为:
则fast的概率为: - 计算Speed节点的熵
➜ test ✗ cat entropy.py
import math
# 计算熵值
def entropy(input_list):
result = 0
for i in input_list:
result -= i * math.log(i, 2)
return(result)
# main run part
if __name__ == '__main__':
# 这里为[P(slow), P(fast)]
plist = [0.5, 0.5]
# 输出计算结果
print(entropy(plist))
- 执行输出
➜ test ✗ python3 entropy.py
1.0
Be First to Comment