最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)現(xiàn)計(jì)算信息熵的示例代碼

 更新時(shí)間:2022年12月26日 14:11:02   作者:顧城沐心  
信息熵(information?entropy)是信息論的基本概念。描述信息源各可能事件發(fā)生的不確定性。本文將通過(guò)Python實(shí)現(xiàn)信息熵的計(jì)算,感興趣的可以了解一下

一:數(shù)據(jù)集準(zhǔn)備

如博主使用的是:

多層感知機(jī)(MLP)實(shí)現(xiàn)考勤預(yù)測(cè)二分類(lèi)任務(wù)(sklearn)對(duì)應(yīng)數(shù)據(jù)集

導(dǎo)入至工程下

二:信息熵計(jì)算

1 導(dǎo)包

from math import log
import pandas as pd

2 讀取數(shù)據(jù)集

dataSet = pd.read_csv('dataSet.csv', header=None).values.tolist()

3 數(shù)據(jù)統(tǒng)計(jì)

numEntries = len(dataSet)  # 數(shù)據(jù)集大小
    labelCounts = {}
    for featVec in dataSet:  #
        currentLabel = featVec[-1]  # 獲取分類(lèi)標(biāo)簽
        if currentLabel not in labelCounts.keys(): labelCounts[currentLabel] = 0  # 字典值不等于0???
        labelCounts[currentLabel] += 1  # 每個(gè)類(lèi)中數(shù)據(jù)個(gè)數(shù)統(tǒng)計(jì)

4 信息熵計(jì)算

    infoEnt = 0.0
    for key in labelCounts:  # 信息熵計(jì)算
        prob = float(labelCounts[key]) / numEntries
        infoEnt -= prob * log(prob, 2)
 
    return infoEnt
    # 返回值 infoEnt 為數(shù)據(jù)集的信息熵,表示為 float 類(lèi)型

測(cè)試運(yùn)行,得到 多層感知機(jī)(MLP)實(shí)現(xiàn)考勤預(yù)測(cè)二分類(lèi)任務(wù)(sklearn)對(duì)應(yīng)數(shù)據(jù)集  信息熵為0.5563916622348017

三:完整源碼分享

from math import log
import pandas as pd
 
dataSet = pd.read_csv('dataSet.csv', header=None).values.tolist()
 
 
def calcInfoEnt(dataSet):
    numEntries = len(dataSet)  # 數(shù)據(jù)集大小
    labelCounts = {}
    for featVec in dataSet:  #
        currentLabel = featVec[-1]  # 獲取分類(lèi)標(biāo)簽
        if currentLabel not in labelCounts.keys(): labelCounts[currentLabel] = 0  # 字典值不等于0???
        labelCounts[currentLabel] += 1  # 每個(gè)類(lèi)中數(shù)據(jù)個(gè)數(shù)統(tǒng)計(jì)
    infoEnt = 0.0
    for key in labelCounts:  # 信息熵計(jì)算
        prob = float(labelCounts[key]) / numEntries
        infoEnt -= prob * log(prob, 2)
 
    return infoEnt
    # 返回值 infoEnt 為數(shù)據(jù)集的信息熵,表示為 float 類(lèi)型
 
 
if __name__ == '__main__':
    # 輸出為當(dāng)前數(shù)據(jù)集的信息熵
    print(calcInfoEnt(dataSet))

四:方法補(bǔ)充

熵,在信息論中是用來(lái)刻畫(huà)信息混亂程度的一種度量。熵最早源于熱力學(xué),后應(yīng)廣泛用于物理、化學(xué)、信息論等領(lǐng)域。1850年,德國(guó)物理學(xué)家魯?shù)婪?middot;克勞修斯首次提出熵的概念,用來(lái)表示任何一種能量在空間中分布的均勻程度。1948年,Shannon在Bell System Technical Journal上發(fā)表文章“A Mathematical Theory of Communication”,將信息熵的概念引入信息論中。本文所說(shuō)的熵就是Shannon熵,即信息熵,解決了對(duì)信息的量化度量問(wèn)題。

下面是小編為大家收集的計(jì)算信息熵的另一種方法,希望對(duì)大家有所幫助

import math
#以整型數(shù)據(jù)為例,給出其信息熵的計(jì)算程序。
###########################################
'''統(tǒng)計(jì)已知數(shù)據(jù)中的不同數(shù)據(jù)及其出現(xiàn)次數(shù)'''
###########################################
def StatDataInf( data ):
    dataArrayLen = len( data )
    diffData = [];
    diffDataNum = [];
    dataCpy = data;
    for i in range( dataArrayLen ):
        count = 0;
        j = i
        if( dataCpy[j] != '/' ):
            temp = dataCpy[i]
            diffData.append( temp )
            while( j < dataArrayLen ):
                if( dataCpy[j] == temp ):
                    count = count + 1
                    dataCpy[j] = '/'
                j = j + 1
            diffDataNum.append( count )
    return diffData, diffDataNum
 
###########################################
'''計(jì)算已知數(shù)據(jù)的熵'''
###########################################
def DataEntropy( data, diffData, diffDataNum ):
    dataArrayLen = len( data )
    diffDataArrayLen = len( diffDataNum )
    entropyVal = 0;
    for i in range( diffDataArrayLen ):
        proptyVal = diffDataNum[i] / dataArrayLen
        entropyVal = entropyVal - proptyVal * math.log2( proptyVal )
    return entropyVal
 
def main():
    data = [1, 2, 1, 2, 1, 2, 1, 2, 1, 2 ]
    [diffData, diffDataNum] = StatDataInf( data )
    entropyVal = DataEntropy( data, diffData, diffDataNum )
    print( entropyVal )
    
    data = [1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1 ]
    [diffData, diffDataNum] = StatDataInf( data )
    entropyVal = DataEntropy( data, diffData, diffDataNum )
    print( entropyVal )
    
    data = [1, 2, 3, 4, 2, 1, 2, 4, 3, 2, 3, 4, 1, 1, 1 ]
    [diffData, diffDataNum] = StatDataInf( data )
    entropyVal = DataEntropy( data, diffData, diffDataNum )
    print( entropyVal )
    
    data = [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4 ]
    [diffData, diffDataNum] = StatDataInf( data )
    entropyVal = DataEntropy( data, diffData, diffDataNum )
    print( entropyVal )
    data = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 1, 2, 3, 4, 5 ]
    [diffData, diffDataNum] = StatDataInf( data )
    entropyVal = DataEntropy( data, diffData, diffDataNum )
    print( entropyVal )
    
if __name__ == '__main__':
    main()
###########################################
#運(yùn)行結(jié)果
1.0
0.9182958340544896
1.965596230357602
2.0
2.3183692540329317

到此這篇關(guān)于Python實(shí)現(xiàn)計(jì)算信息熵的示例代碼的文章就介紹到這了,更多相關(guān)Python計(jì)算信息熵內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

最新評(píng)論

高淳县| 甘洛县| 富源县| 同德县| 绍兴市| 娱乐| 阿图什市| 长岭县| 镇宁| 榕江县| 桃源县| 金门县| 舒城县| 安泽县| 元阳县| 登封市| 东乌珠穆沁旗| 梅州市| 邢台县| 邛崃市| 将乐县| 新营市| 高唐县| 宁强县| 伊春市| 越西县| 武清区| 玉山县| 黎平县| 澜沧| 铁岭县| 灵山县| 嘉义县| 襄汾县| 武城县| 大城县| 普兰店市| 许昌市| 浦北县| 南川市| 镇巴县|