Entropy

如何计算熵

  • \(Entropy = -\sum_{i}(P_i)log_2(P_i)\)
  • 两种特殊情况 最好的情况: 样本都是同类, 则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的概率为: \(P(slow) = 2 / 4 = 0.5\) 则fast的概率为: \(P(fast) = 2 / 4 = 0.5\)

  • 计算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