Python 計算信息熵
信息熵是信息論中的重要概念之一,用來衡量信息的不確定性和隨機性。在機器學習和數據分析中,信息熵經常被用來作為特征選擇和決策樹分割等算法的依據。Python語言可以方便地完成信息熵的計算。
import math def entropy(data): counts = {} for d in data: if d in counts: counts[d] += 1 else: counts[d] = 1 probs = [float(c) / len(data) for c in counts.values()] return -sum(p * math.log(p, 2) for p in probs if p != 0) data = [1,1,1,0,0,0] print(entropy(data))
以上是一個計算信息熵的Python函數。輸入的數據可以是一個列表,其中列表中的元素表示不同的類別。我們首先統計每個類別出現的次數,并計算每個類別出現的概率。然后將概率帶入信息熵的公式中,計算得到最終的信息熵值。對于概率為0的情況,我們將其忽略,因為0的對數不存在。
在上面的例子中,我們計算的是一個二分類問題。數據集包含6個樣本,其中3個屬于第一類別(標記為1),3個屬于第二類別(標記為0)。運行后可以得到輸出結果為1.0,表示該數據集的信息熵為1.0 bit。
在實際應用中,信息熵可以被用來計算決策樹節點的劃分依據。在一個決策樹模型中,每個節點的信息熵越大,說明該節點的不確定性或者混亂程度越高,那么自然就需要更多的分支來進一步分類。相反,如果節點的信息熵較小,說明該節點的樣本分類相對較為清晰,我們可以采用更少的分支來達到同樣的分類效果。