學習隨筆 --python實現熵權法


一、熵權法介紹

       熵最先由申農引入信息論,目前已經在工程技術、社會經濟等領域得到了非常廣泛的應用。

       熵權法的基本思路是根據指標變異性的大小來確定客觀權重。

       一般來說,若某個指標的信息熵指標權重確定方法之熵權法越小,表明指標值得變異程度越大,提供的信息量越多,在綜合評價中所能起到的作用也越大,其權重也就越大。相反,某個指標的信息熵指標權重確定方法之熵權法越大,表明指標值得變異程度越小,提供的信息量也越少,在綜合評價中所起到的作用也越小,其權重也就越小。

二、熵權法賦權步驟

1. 數據標准化

       將各個指標的數據進行標准化處理。

       假設給定了k個指標指標權重確定方法之熵權法,其中指標權重確定方法之熵權法。假設對各指標數據標准化后的值為指標權重確定方法之熵權法,那么指標權重確定方法之熵權法

2. 求各指標的信息熵

       根據信息論中信息熵的定義,一組數據的信息熵指標權重確定方法之熵權法。其中指標權重確定方法之熵權法,如果指標權重確定方法之熵權法,則定義指標權重確定方法之熵權法

3. 確定各指標權重

       根據信息熵的計算公式,計算出各個指標的信息熵為指標權重確定方法之熵權法 。通過信息熵計算各指標的權重:指標權重確定方法之熵權法 。

#coding=utf-8
import numpy as np
li=[[100,90,100,84,90,100,100,100,100],
    [100,100,78.6,100,90,100,100,100,100],
    [75,100,85.7,100,90,100,100,100,100],
    [100,100,78.6,100,90,100,94.4,100,100],
    [100,90,100,100,100,90,100,100,80],
    [100,100,100,100,90,100,100,85.7,100],
    [100 ,100 ,78.6,    100 ,90 , 100, 55.6,    100, 100],
    [87.5  ,  100 ,85.7 ,   100 ,100 ,100, 100 ,100 ,100],
    [100 ,100, 92.9  ,  100 ,80 , 100 ,100 ,100 ,100],
    [100,90 ,100 ,100, 100, 100, 100, 100, 100],
    [100,100 ,92.9 ,   100, 90 , 100, 100 ,100 ,100]]
li = np.array(li)
#轉換為矩陣
li=(li-li.min())/(li.max()-li.min())
#最大最小標准化
m, n = li.shape
#m,n為矩陣行和列數
k = 1 / np.log(m)
yij = li.sum(axis=0)  # axis=0列相加 axis=1行相加
pij = li / yij
test = pij * np.log(pij)
test = np.nan_to_num(test)
#將nan空值轉換為0
ej = -k * (test.sum(axis=0))
# 計算每種指標的信息熵
wi = (1 - ej) / np.sum(1 - ej)
#計算每種指標的權重

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM