學習隨筆 --python實現熵權法
阿新 • • 發佈:2018-09-05
信息論 href tle ima 值轉換 計算公式 ray img 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) #計算每種指標的權重
學習隨筆 --python實現熵權法