熵权法 —— python
目錄
一、熵權法介紹
二、熵權法賦權步驟
1.指標正向化
mapminmax介紹
2.數據標準化
3.計算信息熵
4.計算權重以及得分
四、實例分析
1.導入相關庫
2.讀取數據
?2.指標正向化
2.1?越小越優型處理
2.2?某點最優型指標處理
3.數據標準化
4.計算信息熵
?5.計算權重
?6.計算得分
?總結
一、熵權法介紹
熵權法是一種客觀賦值方法。在具體使用的過程中,熵權法根據各指標的變異程度,利用信息熵計算出各指標的熵權,再通過熵權對各指標的權重進行修正,從而得到較為客觀的指標權重。
一般來說,若某個指標的信息熵指標權重確定方法之熵權法越小,表明指標值得變異程度越大,提供的信息量越多,在綜合評價中所能起到的作用也越大,其權重也就越大。
相反,若某個指標的信息熵指標權重確定方法之熵權法越大,表明指標值得變異程度越小,提供的信息量也越少,在綜合評價中所起到的作用也越小,其權重也就越小。
二、熵權法賦權步驟
1.指標正向化
這個步驟視情況自己決定把。。。。
????????不同的指標代表含義不一樣,有的指標越大越好,稱為越大越優型指標。有的指標越小越好,稱為越小越優型指標,而有些指標在某個點是最好的,稱為某點最優型指標。為方便評價,應把所有指標轉化成越大越優型指標。
設有m個待評對象,n個評價指標,可以構成數據矩陣?
設數據矩陣內元素,經過指標正向化處理過后的元素為? (Xij)'
-
越小越優型指標:C,D屬于此類指標
其他處理方法也可,只要指標性質不變即可
-
某點最優型指標:E屬于此類指標
????????設最優點為a, 當a=90時E最優。
? ? ? ? ??其他處理方法也可,只要指標性質不變即可
-
越大越優型指標:其余所有指標屬于此類指標
? ?此類指標可以不用處理,想要處理也可,只要指標性質不變
mapminmax介紹
最大最小值歸一化
語法
[Y,PS] = mapminmax(X,YMIN,YMAX)
[Y,PS] = mapminmax(X,FP)
Y = mapminmax('apply',X,PS)
X = mapminmax('reverse',Y,PS)
說明:
[Y,PS] = mapminmax(X,YMIN,YMAX)?mapminmax(X,YMIN,YMAX) 將矩陣的每一行壓縮到 [YMIN,YMAX],其中當前行的最大值變為YMAX,最小值變為YMIN。PS為結構體儲存相關信息,如最大最小值等
[Y,PS] = mapminmax(X,FP)?其中FP為結構體類型,這時就是將矩陣的每一行壓縮到[?FP.ymin,?FP.ymax]中
Y = mapminmax('apply',X,PS)?可以將之前儲存的結構體應用到新的矩陣中,利用上一步得到的PS來映射X到Y
X = mapminmax('reverse',Y,PS)?可按照之前數據規律,反歸一化,利用歸一化后的Y和PS重新得到X
2.數據標準化
????????因為每個指標的數量級不一樣,需要把它們化到同一個范圍內再比較。標準化的方法比較多,這里僅用最大最小值標準化方法。
????????設標準化后的數據矩陣元素為rij,由上可得指標正向化后數據矩陣元素為?(Xij)'
3.計算信息熵
????????為避免Pij零元素的出現出現計算錯誤,歸一化最低區間可以從0.002開始。如果某個指標的信息熵Ej越小,就表明其指標值的變異程度越大,提供的 信息量也越大,可以認為該指標在綜合評價起到作用也越大。
4.計算權重以及得分
權重為:
得分為:
四、實例分析
????????用一篇高引用的核心期刊論文[1]為例,針對各個銀行的資產收益率,費用利潤率,逾期貸款率,非生息資產率,流動性比率,資產使用率,自有資本率指標進行評價。設資產收益率為A,費用利潤率為B,逾期貸款率為C,非生息資產率為D,流動性比率為E,資產使用率為F,自有資本率為G。數據表格如下:
1.導入相關庫
#導入相關庫 import copy import pandas as pd import numpy as np2.讀取數據
#讀取數據 data=pd.read_excel('D:\桌面\shangquan.xlsx') print(data)返回:
?在這里,我們可以看到讀取的數據中,有部分是我們不想要的,于是我們得做處理
首先,我們先提取一下變量名
label_need=data.keys()[2:] print(label_need)返回:
?
data=data(:,3:end) %只取指標數據然后,我們提取變量名下的數據值
data1=data[label_need].values print(data1)返回:
?2.指標正向化
#指標正向 化處理后數據為data2 data2=data1 print(data2)2.1?越小越優型處理
#越小越優指標位置,注意python是從0開始計數,對應位置也要相應減1 index=[2,3] for i in range(0,len(index)):data2[:,index[i]]=max(data1[:,index[i]])-data1[:,index[i]] print(data2)返回:
2.2?某點最優型指標處理
#某點最優型指標 index1=[4] a=90 #最優型數值 for i in range(0,len(index1)):data2[:,index1[i]]=1-abs(data1[:,index1[i]]-a)/max(abs(data1[:,index1[i]]-a)) print(data2)返回:
3.數據標準化
#0.002~1區間歸一化 [m,n]=data2.shape data3=copy.deepcopy(data2) ymin=0.002 ymax=1 for j in range(0,n):d_max=max(data2[:,j])d_min=min(data2[:,j])data3[:,j]=(ymax-ymin)*(data2[:,j]-d_min)/(d_max-d_min)+ymin print(data3)返回:
4.計算信息熵
#計算信息熵 p=copy.deepcopy(data3) for j in range(0,n):p[:,j]=data3[:,j]/sum(data3[:,j]) print(p) E=copy.deepcopy(data3[0,:]) for j in range(0,n):E[j]=-1/np.log(m)*sum(p[:,j]*np.log(p[:,j])) print(E)返回:?
?5.計算權重
# 計算權重 w=(1-E)/sum(1-E) print(w)返回:
?6.計算得分
#計算得分 s=np.dot(data3,w) Score=100*s/max(s) for i in range(0,len(Score)):print(f"第{i}個評價對象得分為:{Score[i]}")返回:
?總結
#導入相關庫 import copy import pandas as pd import numpy as np #讀取數據 data=pd.read_excel('D:\桌面\shangquan.xlsx') print(data)label_need=data.keys()[2:] print(label_need) data1=data[label_need].values print(data1)#指標正向 化處理后數據為data2 data2=data1 print(data2)#越小越優指標位置,注意python是從0開始計數,對應位置也要相應減1 index=[2,3] for i in range(0,len(index)):data2[:,index[i]]=max(data1[:,index[i]])-data1[:,index[i]] print(data2)#某點最優型指標 index1=[4] a=90 #最優型數值 for i in range(0,len(index1)):data2[:,index1[i]]=1-abs(data1[:,index1[i]]-a)/max(abs(data1[:,index1[i]]-a)) print(data2)#0.002~1區間歸一化 [m,n]=data2.shape data3=copy.deepcopy(data2) ymin=0.002 ymax=1 for j in range(0,n):d_max=max(data2[:,j])d_min=min(data2[:,j])data3[:,j]=(ymax-ymin)*(data2[:,j]-d_min)/(d_max-d_min)+ymin print(data3)#計算信息熵 p=copy.deepcopy(data3) for j in range(0,n):p[:,j]=data3[:,j]/sum(data3[:,j]) print(p) E=copy.deepcopy(data3[0,:]) for j in range(0,n):E[j]=-1/np.log(m)*sum(p[:,j]*np.log(p[:,j])) print(E)# 計算權重 w=(1-E)/sum(1-E) print(w)#計算得分 s=np.dot(data3,w) Score=100*s/max(s) for i in range(0,len(Score)):print(f"第{i}個評價對象得分為:{Score[i]}")總結
以上是生活随笔為你收集整理的熵权法 —— python的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python3.x和python2.x唯
- 下一篇: bcb隐藏窗口_BCB隐藏Windows