常用综合评价模型(纯干货)

发布于:2025-05-14 ⋅ 阅读:(13) ⋅ 点赞:(0)

常用综合评价模型(纯干货)

一、TOPSIS法

1.1整体流程

1.2 代码实现

#TOPSIS法
bp = a.max(axis=0)  #求正理想解
bm = a.min(axis=0)  #求负理想解
d1 = np.linalg.norm(a-bp,axis=1)  #求到正理想解的距离
d2 = np.linalg.norm(a-bm,axis=1)  #求到负理想解的距离
f1 = d2 / (d1+d2); print('TOPSIS评价值:', f1)

二、灰色关联度分析

2.1整体流程

2.2 代码实现

# 灰色关联度分析
c = bp - a      #计算参考序列与每个序列的差
m1 = c.max(); m2 = c.min()  #计算最大差和最小差
r = 0.5  #分辨系数
xs = (m2+r*m1)/(c+r*m1)  #计算灰色关联系数
# 首先计算xs沿着列方向(axis=1)的平均值,即每一行的平均值,并将结果存储在变量f2中。
f2 = xs.mean(axis=1)     #求灰色关联度
# 它使用np.round函数将f2中的每个元素四舍五入到小数点后四位。最后,它将结果打印出来。
print('灰色关联度:', np.round(f2,4))

三、熵值法

3.1整体流程

3.2 代码实现

# 熵值法
n = a.shape[0]; s = a.sum(axis=0)  #逐列求得
P = a / s  #求特征比重矩阵
e = -(P*np.log(P)).sum(axis=0)/np.log(n)  #计算熵值
g = 1- e; w = g / sum(g)  #计算差异系数和权重系数
f3 = P @ w  #计算各对象的评价值
print('评价值:', np.round(f3,4))

四、秩和比法

4.1整体流程

4.2 代码实现

# 秩和比法
R = rankdata(a, axis=0)  #逐列编秩
RSR = R.mean(axis=1) / n  #计算秩和比
print('秩和比:', np.round(RSR,4))

五、整体实现

5.1数据

0.4671 0.3662 0.5056 0.4931 0.4811 0.7089
0.5839 0.6591 0.4550 0.4010 0.2887 0.3544
0.4204 0.4882 0.5308 0.5853 0.6736 0.4962
0.5139 0.4394 0.5056 0.5392 0.4811 0.3544

5.2代码实现(含详细注释)

#程序文件ex14_2.py
import numpy as np
from scipy.stats import rankdata
# TOPSIS法
a = np.loadtxt('data14_1_2.txt')
bp = a.max(axis=0)  #求正理想解
bm = a.min(axis=0)  #求负理想解
d1 = np.linalg.norm(a-bp,axis=1)  #求到正理想解的距离
d2 = np.linalg.norm(a-bm,axis=1)  #求到负理想解的距离
f1 = d2 / (d1+d2); print('TOPSIS评价值:', f1)
# 灰色关联度分析
c = bp - a      #计算参考序列与每个序列的差
m1 = c.max(); m2 = c.min()  #计算最大差和最小差
r = 0.5  #分辨系数
xs = (m2+r*m1)/(c+r*m1)  #计算灰色关联系数
# 首先计算xs沿着列方向(axis=1)的平均值,即每一行的平均值,并将结果存储在变量f2中。
f2 = xs.mean(axis=1)     #求灰色关联度
# 它使用np.round函数将f2中的每个元素四舍五入到小数点后四位。最后,它将结果打印出来。
print('灰色关联度:', np.round(f2,4))
# 熵值法
n = a.shape[0]; s = a.sum(axis=0)  #逐列求得
P = a / s  #求特征比重矩阵
e = -(P*np.log(P)).sum(axis=0)/np.log(n)  #计算熵值
g = 1- e; w = g / sum(g)  #计算差异系数和权重系数
f3 = P @ w  #计算各对象的评价值
print('评价值:', np.round(f3,4))
# 秩和比法
R = rankdata(a, axis=0)  #逐列编秩
RSR = R.mean(axis=1) / n  #计算秩和比
print('秩和比:', np.round(RSR,4))

网站公告

今日签到

点亮在社区的每一天
去签到