日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

熵权法 —— python

發布時間:2025/3/15 python 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 熵权法 —— 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 np

2.讀取數據

#讀取數據 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。