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

熵值法原理及Python實現(xiàn)的示例詳解

 更新時間:2023年02月03日 09:41:29   作者:侯小啾  
熵值法也稱熵權(quán)法,是學(xué)術(shù)研究及實際應(yīng)用中的一種常用且有效的編制指標(biāo)的方法。本文就來和大家聊聊熵值法原理及Python實現(xiàn),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

熵值法也稱熵權(quán)法,是學(xué)術(shù)研究,及實際應(yīng)用中的一種常用且有效的編制指標(biāo)的方法。

1.簡單理解 信息熵

機(jī)器學(xué)習(xí)中的決策樹算法是對信息熵的一種典型的應(yīng)用。

在信息論中,使用 熵 (Entropy)來描述隨機(jī)變量分布的不確定性。

假設(shè)對隨機(jī)變量X,其可能的取值有x1,x2,...,xn 。即有n種可能發(fā)生的結(jié)果。其對應(yīng)發(fā)生的概率依次為p1,p2,...,pn,則事件pi對應(yīng)的信息熵為:

信息熵中l(wèi)og的底數(shù)通常為2,理論上可以使用不同的底數(shù)。

如何理解信息熵呢,假設(shè)已知今天是周日,則對于“明天是周幾”這件事,只有一種可能的結(jié)果:是周一,且p=1。則“明天是周幾”的信息熵H(X)為−1×log1=0,取信息熵的最小值0。表示“明天是周幾”這個話題的不確定性很低,明天周幾很確定。

再比如拋一枚硬幣,則結(jié)果為正面和反面的概率都是0.5。則信息熵為log2,相比“明天周幾”這件事的信息熵稍大些了。

假設(shè)某事情有100中可能的結(jié)果,每種結(jié)果發(fā)生的概率為0.01。則H(X)=log100,對于等概率均勻分布的事件,不確定的結(jié)果種類越多,則熵越大。

2.編制指標(biāo) (學(xué)術(shù)情景應(yīng)用)

遷移到編制指標(biāo)的情形,通過下邊一個簡單的示例理解熵權(quán)法在學(xué)術(shù)研究中的應(yīng)用。

以陳浩,劉媛華的論文《數(shù)字經(jīng)濟(jì)促進(jìn)制造業(yè)高質(zhì)量發(fā)展了嗎?——基于省級面板數(shù)據(jù)和機(jī)器學(xué)習(xí)模型的實證分析》中部分內(nèi)容展示為例:

對于離散型的隨機(jī)變量,某指標(biāo)在樣本中出現(xiàn)的頻率即可視為概率P,進(jìn)而求出每個指標(biāo)的熵值。

而對于上圖中的連續(xù)型的隨機(jī)變量,則在處理思想上與離散型隨機(jī)變量有所不同。

通常可以先對數(shù)據(jù)做標(biāo)準(zhǔn)化處理,假設(shè)X指標(biāo)中的第i個樣本的標(biāo)準(zhǔn)化處理結(jié)果為Zi:(注意對正向指標(biāo)和負(fù))

則指標(biāo)X中的第i個樣本的權(quán)重為:

上邊說到,指標(biāo)的熵值計算公式為:

為了方便求變異系數(shù),這里計算熵值的時候常常在該公式的基礎(chǔ)上再乘以一個常數(shù)K,即

其中K=1/ln(n) ,n是樣本的個數(shù)。易知,乘以常數(shù)后計算出的熵值,通常范圍都是在區(qū)間[0,1]內(nèi)的。

舉個例子,假設(shè)一共有十個樣本,且十個樣本的連續(xù)型X指標(biāo)數(shù)值非常相近,甚至完全一致。

對數(shù)的底數(shù)取10,則每個樣本的權(quán)重都有接近或等于1/10。

通過公式

計算出的熵值則為1,然后引入一個新的指標(biāo)“差異系數(shù)”來刻畫數(shù)據(jù)之間的差異性大?。词褂?減去熵值得到所謂“差異系數(shù)”,不要跟變異系數(shù)混淆),第j個指標(biāo)的差異系數(shù)dj?=1−Hj?(H_j為第j個指標(biāo)的熵值)

計算可知差異系數(shù)為0。則說明該指標(biāo)在數(shù)值上不存在任何差異(雀食如此)。

隨著數(shù)據(jù)本身數(shù)值上的差距的提升,指標(biāo)的熵值會逐步減小,差異系數(shù)逐漸增大。這樣說相信很容易理解了。

指標(biāo)的熵值越?。ú町愊禂?shù)越大),則該指標(biāo)在最終要編制的指標(biāo)中所占的權(quán)重則越大。

具體的權(quán)重計算公式為:

即某指標(biāo)差異系數(shù)占所有指標(biāo)差異系數(shù)和的比重。

上圖的情景中,作者首先對二級指標(biāo)進(jìn)行衡量,然后使用熵權(quán)法,求出每個二級指標(biāo)的熵值,進(jìn)而求出權(quán)重,分別計算出四個一級指標(biāo);

然后再對四個一級指標(biāo)再次使用熵權(quán)法計算權(quán)重,進(jìn)而得到最終指標(biāo):制造業(yè)高質(zhì)量發(fā)展水平。

3.python實現(xiàn)

3.1 數(shù)據(jù)準(zhǔn)備

為方便讀者測試,這邊手動生成一段數(shù)據(jù)作為示例。

將指標(biāo)1,指標(biāo)2,指標(biāo)3,指標(biāo)4,合并編制為一個“綜合指標(biāo)”。

import pandas as pd
import numpy as np

# 1. 初始數(shù)據(jù) 假設(shè)指標(biāo)4是負(fù)向指標(biāo),其余三個為正向指標(biāo)
df1 = pd.DataFrame({'指標(biāo)1': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
                    '指標(biāo)2': [2, 4, 6, 8, 10, 2, 4, 6, 8, 10],
                    '指標(biāo)3': [1, 2, 1, 3, 2, 1, 3, 2, 3, 1],
                    '指標(biāo)4': [3, 1, 2, 3, 5, 8, 7, 8, 8, 9]
                   })
print(df1)            

數(shù)據(jù)為DataFrame格式,效果展示如下:

3.2 數(shù)據(jù)預(yù)處理

然后是數(shù)據(jù)預(yù)處理部分,這里定義一個泛用性較強(qiáng)的標(biāo)準(zhǔn)化處理函數(shù),

該函數(shù)對于正向指標(biāo)和負(fù)向指標(biāo)(越大越好的指標(biāo)和越小越好的指標(biāo)),可以分別進(jìn)行不同的處理。

(處理邏輯通過代碼可以很容易看出)

同時該函數(shù)也可以兼容只進(jìn)行其中一種處理的情景。

# 2.數(shù)據(jù)預(yù)處理 定義標(biāo)準(zhǔn)化處理函數(shù)
def Standardization(data,cols1=None, cols2=None):
    """
    :param data:目標(biāo)數(shù)據(jù)
    :param cols1: 需要處理的正向指標(biāo)列名列表,類型為列表或None [col1, col2, col3]
    :param cols2: 需要處理的負(fù)向指標(biāo)列名列表,類型為列表或None [col1, col2, col3]
    :return: 輸出處理結(jié)果
    """
    if cols1 == None and cols2 == None:
        return data
    elif cols1 != None and cols2 == None:
        return (data[cols1] - data[cols1].min())/(data[cols1].max()-data[cols1].min())
    elif cols1 == None and cols2 != None:
        return (data[cols2].max - data[cols2])/(data[cols2].max()-data[cols2].min())
    else:
        a = (data[cols1] - data[cols1].min())/(data[cols1].max()-data[cols1].min())
        b = (data[cols2].max() - data[cols2])/(data[cols2].max()-data[cols2].min())
        return pd.concat([a, b], axis=1)

調(diào)用函數(shù),進(jìn)行標(biāo)準(zhǔn)化處理:

df2 = Standardization(df1, cols1=['指標(biāo)1', "指標(biāo)2", "指標(biāo)3"], cols2=['指標(biāo)4'])
print(df2)

處理結(jié)果如下:

3.3 熵值、權(quán)重計算

然后定義一個通過熵值計算權(quán)重,及樣本評分的函數(shù)。

def Weightfun(data):
    """
    :param data: 預(yù)處理好的數(shù)據(jù)
    :return: 輸出權(quán)重。
    """
    K = 1/np.log(len(data))
    e = -K*np.sum(data*np.log(data))
    d = 1-e
    w = d/d.sum()
    return w

該函數(shù)的返回值有兩個,w是權(quán)重,score是評分

調(diào)用函數(shù),計算出各個指標(biāo)的權(quán)重:

w = Weightfun(df2)
print(w)

各個指標(biāo)權(quán)重如下圖所示:

3.4 編制綜合評價指標(biāo)

直接將DataFrame格式的數(shù)據(jù)與求出的權(quán)重相乘,并求和,即得到通過熵值法編制出的綜合指標(biāo),代碼及結(jié)果如下圖所示:

df3= df2 * w
df3['綜合指標(biāo)'] = df3.sum(axis=1)

到此這篇關(guān)于熵值法原理及Python實現(xiàn)的示例詳解的文章就介紹到這了,更多相關(guān)Python熵值法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python request設(shè)置HTTPS代理代碼解析

    Python request設(shè)置HTTPS代理代碼解析

    這篇文章主要介紹了Python request設(shè)置HTTPS代理代碼解析,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • python中django框架通過正則搜索頁面上email地址的方法

    python中django框架通過正則搜索頁面上email地址的方法

    這篇文章主要介紹了python中django框架通過正則搜索頁面上email地址的方法,涉及django框架及正則表達(dá)式的使用技巧,需要的朋友可以參考下
    2015-03-03
  • Laravel+Dingo/Api 自定義響應(yīng)的實現(xiàn)

    Laravel+Dingo/Api 自定義響應(yīng)的實現(xiàn)

    這篇文章主要介紹了Laravel+Dingo/Api 自定義響應(yīng)的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • Python Celery多隊列配置代碼實例

    Python Celery多隊列配置代碼實例

    這篇文章主要介紹了Python Celery多隊列配置代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • python教程十行代碼教你語音轉(zhuǎn)文字QQ微信聊天

    python教程十行代碼教你語音轉(zhuǎn)文字QQ微信聊天

    QQ上面發(fā)的語音消息是可以直接文字識別的,但是微信為什么沒有呢?是因為技術(shù)太難實現(xiàn)嗎?這個很簡單?。〗裉旖o大家介紹一下語音轉(zhuǎn)文字的原理
    2021-09-09
  • Python生成xml文件方法示例

    Python生成xml文件方法示例

    Python標(biāo)準(zhǔn)庫xml.etree.ElementTree提供了一些生成XML的工具,可以用于創(chuàng)建和操作XML文檔,本文就來介紹以下如何生成生成xml文件,感興趣的可以了解一下
    2023-09-09
  • python命令行傳遞參數(shù)的兩種方式

    python命令行傳遞參數(shù)的兩種方式

    python在命令行運(yùn)行.py文件時,如何在命令行傳遞參數(shù)給運(yùn)行程序,python默認(rèn)提供了sys模塊的系統(tǒng)參數(shù)屬性實現(xiàn)接收命令行中的外部參數(shù),本文給大家介紹了python命令行傳遞參數(shù)的兩種方式,需要的朋友可以參考下
    2024-05-05
  • python 繪制擬合曲線并加指定點(diǎn)標(biāo)識的實現(xiàn)

    python 繪制擬合曲線并加指定點(diǎn)標(biāo)識的實現(xiàn)

    這篇文章主要介紹了python 繪制擬合曲線并加指定點(diǎn)標(biāo)識的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 使用pyQT5顯示網(wǎng)頁的實現(xiàn)步驟

    使用pyQT5顯示網(wǎng)頁的實現(xiàn)步驟

    本文主要介紹了使用pyQT5顯示網(wǎng)頁的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 使用python獲取cpu每秒的使用率

    使用python獲取cpu每秒的使用率

    這篇文章主要介紹了使用python獲取cpu每秒的使用率,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05

最新評論

霍城县| 凉城县| 江陵县| 凯里市| 安宁市| 湄潭县| 名山县| 尚义县| 正蓝旗| 潞西市| 化州市| 甘洛县| 两当县| 郑州市| 孟连| 苏尼特左旗| 沙河市| 沛县| 义马市| 大悟县| 商河县| 屏东市| 汝城县| 樟树市| 特克斯县| 尚义县| 华容县| 汽车| 江川县| 汾阳市| 泰州市| 桐柏县| 韶山市| 望谟县| 灵寿县| 禹城市| 木里| 微山县| 隆林| 鹤山市| 封丘县|