评价类——TOPSIS法(Technique for Order Preference by Similarity to an Ideal Solution),主观打分(主观设置权重)

感觉大家对原理性的东西不太感兴趣,那我就直接举例提供代码,以及详细的注释,大家自己对照改代码应用于你自己建立的模型吧。

完整代码关注博客底部微信公众号获得!

这些代码全部是我自己做数模竞赛时候自己用的代码。可以直接运行,记得修改文件路径。

一、TOPSIS简单介绍

TOPSIS法(Technique for Order Preference by Similarity to an Ideal Solution, 理想解相似度排序法)是一种多指标决策分析方法。它的基本思想是:优选方案应当距离正理想解(理想状态)最近,距离负理想解(最差状态)最远。通过计算每个方案与正、负理想解的距离,确定各个方案的相对接近度,从而对方案进行排序和选择。

二、Python代码实现

2.1 安装所需的Python包依赖

pip install numpy pandas

2.2 TOPSIS代码

import numpy as np
import pandas as pd

# TOPSIS算法实现







# 输出结果
result_df = pd.DataFrame({
    '方案': schemes,
    '得分': closeness
})

# 按得分接近度排序
result_df = result_df.sort_values(by='得分', ascending=False)

# 显示最终结果
print(result_df)

# 如果你想将结果保存为CSV文件,可以使用以下命令:
result_df.to_csv('topsis_result.csv', index=False)

三、手把手教你修改Python代码

第一点是:你必须把你的数据格式储存成这种形式,如下图所示:,第一列是类型,第一行是指标
在这里插入图片描述

第二点是:你必须通过把你的excel文件转为csv文件,不会的参考我的这篇博客:文件格式转换:EXCEL和CSV文件格式互相转换

第三点是:你必须在代码中输入你的csv文件路径,如下图所示:

在这里插入图片描述

第四点是:你必须通过查阅参考文献,等资料获取你的各类指标的权重,注意,权重的总和为1修改代码如下图所示:
在这里插入图片描述

第五点是:你必须确定你的指标是正向True(越大越好)还是负向False(越小越好),修改代码如下图:

在这里插入图片描述

四、TOPSIS原理

以下述数据进行讲解:

在这里插入图片描述

4.1 TOPSIS的步骤

TOPSIS 的计算主要包括以下步骤:

4.1.1 步骤 1:构建决策矩阵

构建一个由 m 个方案和 n 个指标组成的决策矩阵,矩阵的每一行代表一个方案,每一列代表一个评价指标。

例如,假设有 3 个备选方案(A1, A2, A3)和 4 个评价指标(C1, C2, C3, C4),决策矩阵如下:

C1C2C3C4
A125016125
A220020103
A330014154

4.1.2 步骤 2:标准化决策矩阵

为了消除量纲的影响,需对决策矩阵进行标准化处理。常用的标准化方法是向量归一化,公式如下:

r i j = x i j ∑ i = 1 m x i j 2 r_{ij} = \frac{x_{ij}}{\sqrt{\sum_{i=1}^{m} x_{ij}^2}} rij=i=1mxij2 xij
其中, x i j x_{ij} xij为原始决策矩阵中的值, r i j r_{ij} rij为标准化后的值。

4.1.3 步骤 3:构建加权标准化决策矩阵

为反映各个指标的重要性,需要根据指标的权重对标准化后的决策矩阵进行加权处理。加权标准化矩阵的公式为:

v i j = w j × r i j v_{ij} = w_j \times r_{ij} vij=wj×rij
其中, w j w_j wj 为指标的权重。

4.1.4 步骤 4:确定正理想解和负理想解

  • 正理想解 (Ideal Solution):各指标取最大值,代表最优情况。
    V + = { max ⁡ ( v i j ) ∣ i = 1 , . . . , m } V^+ = \{ \max(v_{ij}) \mid i=1,...,m \} V+={max(vij)i=1,...,m}

  • 负理想解 (Negative Ideal Solution):各指标取最小值,代表最差情况。
    V − = { min ⁡ ( v i j ) ∣ i = 1 , . . . , m } V^- = \{ \min(v_{ij}) \mid i=1,...,m \} V={min(vij)i=1,...,m}

4.1.5 步骤 5:计算与正理想解和负理想解的距离

使用欧几里得距离公式计算每个方案与正理想解和负理想解的距离:

  • 与正理想解的距离
    D i + = ∑ j = 1 n ( v i j − v j + ) 2 D_i^+ = \sqrt{\sum_{j=1}^{n} (v_{ij} - v_j^+)^2} Di+=j=1n(vijvj+)2

  • 与负理想解的距离
    D i − = ∑ j = 1 n ( v i j − v j − ) 2 D_i^- = \sqrt{\sum_{j=1}^{n} (v_{ij} - v_j^-)^2} Di=j=1n(vijvj)2

4.1.6 步骤 6:计算相对接近度

相对接近度 C i C_i Ci表示方案距离理想解的相对接近程度,公式为:

C i = D i − D i + + D i − C_i = \frac{D_i^-}{D_i^+ + D_i^-} Ci=Di++DiDi
C i C_i Ci越大,方案越接近正理想解,越优。

4.1.7 步骤 7:方案排序

根据相对接近度 C i C_i Ci对各个方案进行排序,值越大的方案排名越高,最优方案排在第一位。


2. TOPSIS的优点

  • 直观简单:通过数学计算,能够简单明了地评价各个方案之间的优劣。
  • 多指标评估:能够处理多维度的评价指标,且考虑了指标的权重。
  • 灵活性高:适用于不同类型的指标(正向、负向)以及不同的权重分配。

3. 适用场景

TOPSIS 方法在很多领域中被广泛应用,特别是:

  • 供应链管理:在多个供应商中选择最优供应商。
  • 风险评估:对多个风险进行排序和优先处理。
  • 投资选择:在多个投资选项中选取最优的投资组合。

4. 示例

以 3 个方案、4 个评价指标为例,假设指标权重分别为:

  • C1: 0.4
  • C2: 0.3
  • C3: 0.2
  • C4: 0.1

决策矩阵如下:

C1C2C3C4
A125016125
A220020103
A330014154

经过 TOPSIS 计算,最终的相对接近度和排名如下(均为正理想解):

方案相对接近度排名
A30.6198691
A10.4725852
A30.3677133

经过 TOPSIS 计算,最终的相对接近度和排名如下(C1、C2、C4正理想解,C3负理想解):

方案相对接近度排名
A30.5408371
A10.4987412
A30.4466183
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ymchuangke

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值