資訊增益 夏農熵

2021-08-13 02:02:32 字數 1454 閱讀 7219

在劃分資料集之前之後資訊發生的變化稱為資訊增益,計算每個特徵值劃分資料集獲得的資訊增益,獲得資訊增益最高的特徵就是最好的選擇。

集合資訊的度量方式稱為夏農熵或者簡稱為熵定義為資訊的期望值。何為資訊,如果待分類的事物的標籤佔總標籤的百分比為p(xi),則符號xi的資訊定義為:

計算熵,則需要計算所有類別所有可能值包含的資訊期望值,公式為:

計算給定資料集的熵,**為:

from math import log

defcalcshannonent

(dataset):

numentries = len(dataset) #資料集的長度

labelcounts = {} #標籤計數集

for featvec in dataset:

currentlabel = featvec[-1] #當前標籤為featvec最後乙個數

if currentlabel not

in labelcounts.keys():

labelcounts[currentlabel] = 0

labelcounts[currentlabel] += 1

#記錄標籤的數量

shannonent = 0.0

for key in labelcounts:

prob = float(labelcounts[key])/numentries #此標籤佔所有標籤的百分比

shannonent -= prob * log(prob, 2) #log以2為底計算資訊期望值

return shannonent

#建立資料集

defcreatedataset

(): dataset = [[1, 1, 'yes'],

[1, 1, 'yes'],

[1, 0, 'no'],

[0, 1, 'no'],

[0, 1, 'no']]

labels = ['no su***cing', 'flippers']

return dataset, labels

mydat, labels = createdataset()

shannonent = calcshannonent(mydat)

print(shannonent)

>>0.9709505944546686

熵越高,則混合的資料也越多,資料的無序程度也更高。得到熵之後,我們就可以按照獲取最大資訊增益的方法劃分資料集。

最大資訊熵增益 資訊熵與資訊增益

1.資訊熵 資訊熵就是指不確定性,熵越大,不確定性越大 2.關於資訊增益 資訊增益是針對乙個乙個的特徵而言的,就是看乙個特徵t,系統有它和沒它的時候資訊量各是多少,兩者的差值就是這個特徵給系統帶來的資訊量,即增益。系統含有特徵t的時候資訊量很好計算,就是剛才的式子,它表示的是包含所有特徵時系統的資訊...

最大資訊熵增益 資訊熵與資訊增益

前言 熵在機器學習中用的非常普遍,但這個又難以理解,經常忘記,寫一篇部落格記錄一下,也方便其他人學習了解。什麼是熵 一開始接觸熵是大二的資訊理論,非常難的一門課,當時學的時候不知道這個東西有什麼用,完全就不太想學,因為不知道幹嘛,也不知道學了有什麼用,但是現在很後悔,定義 熵也叫資訊熵,可以表徵隨機...

熵 資訊增益 資訊增益率

介紹資訊增益之前,首先需要介紹一下熵的概念,這是乙個物理學概念,表示 乙個系統的混亂程度 系統的不確定性越高,熵就越大。假設集合中的變數x 它對應在集合的概率分別是p 那麼這個集合的熵表示為 舉乙個的例子 對遊戲活躍使用者進行分層,分為高活躍 中活躍 低活躍,遊戲a按照這個方式劃分,使用者比例分別為...