在劃分資料集之前之後資訊發生的變化稱為資訊增益,計算每個特徵值劃分資料集獲得的資訊增益,獲得資訊增益最高的特徵就是最好的選擇。
集合資訊的度量方式稱為夏農熵或者簡稱為熵,熵定義為資訊的期望值。何為資訊,如果待分類的事物的標籤佔總標籤的百分比為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按照這個方式劃分,使用者比例分別為...