www.日本精品,久久中文视频,中文字幕第一页在线播放,香蕉视频免费网站,老湿机一区午夜精品免费福利,91久久综合精品国产丝袜长腿,欧美日韩视频精品一区二区

機器學習基礎(三)——信息、信息熵與信息增益x

發(fā)布時間:2020-08-28 來源: 入黨申請 點擊:

 機器學習基礎(三)—— 信息、信息熵與信息增益 信息:information,信息熵:information entropy,信息增益:information gain(IG)

 劃分數(shù)據(jù)集的大原則是:將無序的數(shù)據(jù)變得更加有序。組織雜亂無章數(shù)據(jù)的一種方法就是使用信息論度量信息,信息論是量化處理信息的分支科學。

 在劃分數(shù)據(jù)集之前之后信息發(fā)生的變化稱為信息增益,知道如何計算信息增益,我們就可以計算每一個特征值劃分數(shù)據(jù)集獲得的信息增益, 獲得信息增益最高的特征就是最好的選擇。

 征就是最好的選擇。

 信息、信息熵的定義 如果待分類的數(shù)據(jù)集可能劃分在多個分類之中,則類別 xi?? ??

 的信息定義為:

 l(xi)=−log2p(xi) ??(?? ?? ) = −log 2 ??(?? ?? )

 其中 p(xi)??(?? ?? ) 是該類別的樣本所占的比例; 為了計算熵,我們需要計算所有類別所有可能包含的信息期望值(由離散型隨機變量的期望計算公式可知),

 H=−∑i=1np(xi)log2p(xi) ?? = −∑??????=1(?? ?? )log 2 ??(?? ?? )

 遍歷相乘再相加,可以使用內(nèi)積計算熵。

 信息熵,被用來度量信息的無序程度(信息熵越大,越無序,等于 0 時,意味著全部類別都相同,完全有序)

 熵的性質(zhì):

 熵的性質(zhì):

 (1)非負,0<p(xi)≤1→log2p(xi)≤00 < ??(?? ?? ) ≤ 1 → log 2 ??(?? ?? ) ≤ 0 (2)完全有序,也即 p(x)=1→H=0??(??) = 1 → ?? = 0 • (3)香農(nóng)熵越小越有序,越大越混亂。

 計算數(shù)據(jù)集的香農(nóng)熵和最佳劃分特征 根據(jù)數(shù)據(jù)集的類別,計算數(shù)據(jù)集的香農(nóng)熵:

 from collections import Counter

 from math import log

  def calcShannonEnt(dataset):

 classCnt = [sample[-1] for sample in dataset]

 n = len(dataset)

 classCnt = Counter(classCnt)

 ent = 0.

 for times in classCnt.values():

 ent -= times/n*log(times/n, 2)

 return ent

 按照給定特征(屬性列)劃分數(shù)據(jù)集:

 # 第三個參數(shù) val 不是手動指定的,

 # 該函數(shù)也不是直接交由外部調(diào),而是被其他函數(shù)調(diào)用

 # 在函數(shù)內(nèi)部,也即遍歷屬性列不重復的屬性值時,傳遞進來 val 值

 def splitDataset(dataset, axis, val):

 splitedDataset = []

 for sample in dataset:

 if sample[axis] == val:

 splitedDataset.append(sample[:axis]+sample[axis+1:])

 return splitedDataset

 選擇最好的數(shù)據(jù)集劃分方式,也即找到最好的屬性列,顯然需要遍歷屬性列,找到最大的信息增益:

 def chooseBestFeatToSplit(dataset):

 baseEnt = calcShannonEnt(dataset)

 bestInfoGain, bestFeat = 0., -1

 for j in range(len(dataset[0])-1):

 featCol = [sample[j] for sample in dataset]

 uniqFeat = set(featCol)

 newEnt = 0.

 for val in uniFeat:

 subDataset = splitDataset(dataset, j, val)

 newEnt = len(subDataset)/len(dataset)*calcShannonEnt(subDataset)

 infoGain = baseEnt - newEnt

 if bestInfo < infoGain:

 bestInfo = infoGain

 bestFeast = j

 return bestFeat

相關熱詞搜索:信息 增益 機器

版權所有 蒲公英文摘 www.newchangjing.com