TOPSIS—熵權(quán)法的基本原理與基于Python實現(xiàn)代碼

你好,這是必應(yīng)。根據(jù)我的搜索結(jié)果,TOPSIS—熵權(quán)法綜合評價的基本原理是:TOPSIS法(Technique for Order Preference by Similarity to Ideal Solution)可翻譯為逼近理想解排序法,是一種常用的綜合評價方法,其能充分利用原始數(shù)據(jù)的信息,其結(jié)果能精確地反映各評價方案之間的差距。熵權(quán)法是一種客觀確定指標權(quán)重的方法,可以避免主觀因素的影響。TOPSIS與熵權(quán)法可以組合使用,通過以下步驟進行綜合評價:
指標標準化并得到權(quán)重。
得到加權(quán)后的規(guī)范化矩陣Z。
確定正、負理想解。
計算各樣本距離正、負理想解的距離。
計算各評價對象與最優(yōu)方案的貼近程度。
TOPSIS—熵權(quán)法綜合評價的公式如下:
標準化矩陣P:
熵值E:
權(quán)重W:
加權(quán)規(guī)范化矩陣Z:
正理想解和負理想解:
距離和:
貼近程度:
代碼實現(xiàn)
import?numpy?as?np
def?entropy_weight(x):
????#?計算每個指標的熵值
????m,?n?=?x.shape
????e?=?np.zeros((1,?n))
????for?j?in?range(n):
????????p?=?x[:,?j]?/?x[:,?j].sum()
????????e[0][j]?=?-?(p?*?np.log(p)).sum()
????#?計算每個指標的權(quán)重
????w?=?np.zeros((1,?n))
????for?j?in?range(n):
????????w[0][j]?=?(1?-?e[0][j])?/?((1?-?e).sum())
????return?w
def?topsis(x,?w):
????#?將x歸一化處理
????m,?n?=?x.shape
????x_norm?=?np.zeros((m,?n))
????for?j?in?range(n):
????????x_norm[:,?j]?=?x[:,?j]?/?np.sqrt((x[:,?j]**2).sum())
????#?計算加權(quán)后的矩陣
????x_weighted?=?np.zeros((m,?n))
????for?j?in?range(n):
????????x_weighted[:,?j]?=?w[0][j]?*?x_norm[:,?j]
????#?計算最優(yōu)解和最劣解
????max_vec?=?x_weighted.max(axis=0)
????min_vec?=?x_weighted.min(axis=0)
????#?計算每個評價對象與最優(yōu)解和最劣解的距離
????d_plus?=?np.sqrt(((x_weighted?-?max_vec)**2).sum(axis=1))
????d_minus?=?np.sqrt(((x_weighted?-?min_vec)**2).sum(axis=1))
????#?計算得分
????score?=?d_minus?/?(d_minus?+?d_plus)
????return?score
#?示例數(shù)據(jù)
x?=?np.array([[1,2,3],[4,5,6],[7,8,9]])
#?計算熵權(quán)法得到的權(quán)重
w?=?entropy_weight(x)
#?計算TOPSIS得分
score?=?topsis(x,?w)
print(score)

本文使用 文章同步助手 同步