前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >综合评价之TOPSIS模型

综合评价之TOPSIS模型

作者头像
三猫
发布于 2021-01-04 08:05:15
发布于 2021-01-04 08:05:15
2.1K04
代码可运行
举报
运行总次数:4
代码可运行

TOPSIS基本概念

TOPSIS (Technique for Order Preference by Similarity to an Ideal Solution )模型中文叫做“逼近理想解排序方法”,是根据评价对象与理想化目标的接近程度进行排序的方法,是一种距离综合评价方法。基本思路是通过假定正、负理想解,测算各样本与正、负理想解的距离,得到其与理想方案的相对贴近度(即距离正理想解越近同时距离负理想解越远),进行各评价对象的优劣排序。具体步骤及概念如下:

step 1: 指标同向化、标准化并得到权重。这部分与熵权法结合,通过熵权法得到权重,避免主观因素影响,得到权重向量W及标准化矩阵P。具体内容可参照综合评价之熵权法,这里不再赘述。

step 2 : 得到加权后的规范化矩阵Z。Z由P与W相乘后得到。

step 3 : 确定正、负理想解。正理想解指各指标都达到样本中最好的值,负理想解指各指标都为样本中最差的值。

step 4 : 计算各样本距离正、负理想解的距离。

step 5 : 计算各评价对象与最优方案的贴近程度。正其中

的取值范围为[0,1],越接近1表明样本评分越好。

2

Python实现

这里使用综合评价之熵权法中的测试数据作为演示。数据中共有4个变量,2036条样本,下面就开始用基于熵权法的TOPSIS计算样本得分。‍

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pandas as pdimport numpy as np
#逆向指标标准化def normalization1(data):    _range = np.max(data) - np.min(data)    return (data - np.min(data)) / _range
#正向指标标准化def normalization2(data):    _range = np.max(data) - np.min(data)    return (np.max(data) - data) / _range
#熵权法计算权重def entropyWeight(data):    P = np.array(data)    # 计算熵值    E = np.nansum(-P * np.log(P) / np.log(len(data)), axis=0)    # 计算权系数    return (1 - E) / (1 - E).sum()
def topsis(data, weight=None):          # 权重    weight = entropyWeight(data) if weight is None else np.array(weight)        # 最优最劣方案    Z = pd.DataFrame([(data*weight.T).min(), (data*weight.T).max()], index=['负理想解', '正理想解'])    #Z = pd.DataFrame([data.min(), data.max()], index=['负理想解', '正理想解'])        # 距离    Result = data.copy()    #Result['正理想解'] = np.sqrt(((data - Z.loc['正理想解']) ** 2 * weight).sum(axis=1))    #Result['负理想解'] = np.sqrt(((data - Z.loc['负理想解']) ** 2 * weight).sum(axis=1))    Result['正理想解'] = np.sqrt(((data - Z.loc['正理想解']) ** 2 ).sum(axis=1))    Result['负理想解'] = np.sqrt(((data - Z.loc['负理想解']) ** 2 ).sum(axis=1))
    # 综合得分指数    Result['综合得分指数'] = Result['负理想解'] / (Result['负理想解'] + Result['正理想解'])    Result['排序'] = Result.rank(ascending=False)['综合得分指数']
    return Result, Z, weight
if __name__=='__main__':    data = pd.read_csv('testdata.csv',sep = ',',encoding='gbk',header=None)    data1 = data.copy()    data1[0] = normalization1(data1[0])    data1[1] = normalization1(data1[1])    data1[2] = normalization1(data1[2])    data1[3] = normalization1(data1[3])    [result,z1,weight] = topsis(data1)

最终得到的评分结果(部分)、正负理想解和权重如下:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习养成记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
统计学方法
b. 对m个待评测项目、n个属性,评价矩阵R.shape=(m, n),则各属性
用户8329433
2021/03/05
7540
统计学方法
数学建模--优劣解距离法TOPSIS
TOPSIS法的优势在于能够充分利用原始数据的信息,并能更精确地反映出各个评价方案之间的差距。此外,它还具有较强的适应性和灵活性,可以应用于多种领域和问题的解决。
用户11315985
2024/10/16
4190
数学建模--优劣解距离法TOPSIS
python 基于熵值法进行综合评价
在多指标的综合加权评价中,确定各项指标的权重是非常关键的环节。对各指标赋权的合理与否,直接关系到分析的结论。确定权重系数的方法很多,归纳起来分为两类:即主观赋权法和客观赋权法。主观赋权法是由评价人员根据各项指标的重要性而认为赋权的一种方法,充分反应专家的经验,目前,使用较多的是专家咨询法、层次分析法、循环打分法等。客观赋权法是从实际数据出发,利用指标值所反应的客观信息确定权重的一种方法,如熵值法、银子分析法、主成分分析、均方差法、相关系数法等。本文主要介绍熵值法进行综合评价,并使用Python进行实现。
forxtz
2021/05/27
2.1K0
数学建模学习笔记(二十八)评价类:TOPSIS模型
Topsis法,全称为Technique for Order Preference by Similarity to an Ideal Solution中文常翻译为优劣解距离法,该方法能够根据现有的数据,对个体进行评价排序。根据有限个评价对象与理想化目标的接近程度进行排序的方法,是在现有的对象中进行相对优劣的评价。
zstar
2022/06/14
1.7K0
数学建模学习笔记(二十八)评价类:TOPSIS模型
数学和统计方法
1、平均数:所有数加在一起求平均 2、中位数:对于有限的数集,可以通过把所有观察值高低排序后找出正中间的一个作为中位数。如果观察值有偶数个,通常取最中间的 两个数值的平均数作为中位数。 3、众数:出现次数最多的那个数 4、加权平均数:加权平均值即将各数值乘以相应的权数,然后加总求和得到总体值,再除以总的单位数。加权平均值的大小不仅取决于 总体中各单位的数值(变量值)的大小,而且取决于各数值出现的次数(频数),由于各数值出现的次数对其在平均数中的影响起着权衡 轻重的作用,因此叫做权数。 因为加权平均值是根据权数的不同进行的平均数的计算,所以又叫加权平均数。在日常生活中,人们常常 把“权数”理解为事物所占的“权重” x占a% y占b% z占c% n占m% 加权平均数=(ax+by+cz+mn)/(x+y+z+n)
老虎也淘气
2024/01/30
1770
数学和统计方法
Python小案例(六)通过墒权法计算指标权重
在日常业务中,产品运营需要综合多个指标进行判断,如果没有目标变量进行监督训练的话,很难人为地判断哪个指标更好,综合起来哪个类别更优秀。
HsuHeinrich
2023/02/24
6560
Python小案例(六)通过墒权法计算指标权重
2021数模国赛C题——代码纯享版 – 学金融的文史哲小生
一、ACF(自相关系数检验周期) %% 通过autocorr和xcorr自相关求周期 clear ;clc %加载TOP13家供货商240周的供货量数组文件 load FFt.mat; %使用autocorr函数 Randi = randi([2 14],1,1) A = FFt([1:96],Randi) ; len = length(A) ; [ACF,lags,bounds] = autocorr(A,len-1) ; subplot(2,1,1) ; plot(lags(1:end),ACF(1:e
哈萨克东方红
2022/11/01
8020
2021数模国赛C题——代码纯享版 – 学金融的文史哲小生
数学建模--国赛备赛---TOPSIS算法
数学建模论文和相应的支撑材料,这个数学建模论文pdf提交,支撑材料尽量压缩(zip格式),命名这个支撑材料合理即可;
阑梦清川
2025/02/24
530
数学建模--国赛备赛---TOPSIS算法
评价模型数据挖掘之评价模型
是定性与定量相结合的多准则决策、评价方法。将决策的有关元素分解成目标层、准则层和方案层,并通过人们的判断对决策方案的优劣进行排序,在此基础上进行定性和定量分析。它把人的思维过程层次化、数量化,并用数学为分析、决策、评价、预报和控制提供定量的依据。
用户2909867
2018/08/22
2.8K0
评价模型数据挖掘之评价模型
【综合评价方法 变异系数权重法】指标权重确定方法之变异系数权重法
变异系数法是直接利用各项指标所包含的信息,通过计算得到指标的权重。是一种客观赋权的方法。此方法的基本做法是:在评价指标体系中,指标取值差异越大的指标,也就是越难以实现的指标,这样的指标更难反映被评价单位的差距。 由于评价指标体系中的各项指标的量纲不同,不宜直接比较其差别程度。为了消除各项评价指标的量纲不同的影响,需要用各项指标的变异系数来衡量各项指标取值的差异程度。各项指标的变异系数公式如下:
全栈程序员站长
2022/08/18
2.5K0
【综合评价方法 变异系数权重法】指标权重确定方法之变异系数权重法
VaR系列(一):HS,WHS,RM方法估计VaR
最近参加了一个线上学习计划,一群人一起学《Elements of Financial Risk Management》这本书,主要偏向于金融时间序列和多因子模型的知识,结合python编程。现在已经看了三分之一左右,感觉写的还不错,有些收获,意外惊喜是教材的答案全是用excel公式做的,头一次发现excel还可以做极大似然估计这种东西,很神奇。
量化小白
2019/08/29
2.7K0
VaR系列(一):HS,WHS,RM方法估计VaR
Kmeans算法的Python实现
Kmeans聚类 kmeans K-means算法是很典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为簇是由距离靠近的对象组成的,因
用户2183996
2018/06/21
8660
综合评价之熵权法
导读:实际工作生活中经常需要进行综合评价,如根据各科考试成绩对学生排名、根据用户薪资消费能力等维度对用户信用进行打分、各种方案中选择最优方案等等。好的综合评价方法可以帮我们进行目标的横向比较或自身变化趋势分析,已有的综合评价方法有很多,今天来介绍其中的熵权法。
三猫
2020/11/19
2.3K0
综合评价之熵权法
机器学习算法Python实现
目录 一、线性回归 1、代价函数 2、梯度下降算法 3、均值归一化 4、最终运行结果 5、使用scikit-learn库中的线性模型实现 二、逻辑回归 1、代价函数 2、梯度 3、正则化 4、S型函数(即) 5、映射为多项式 6、使用的优化方法 7、运行结果 8、使用scikit-learn库中的逻辑回归模型实现 逻辑回归_手写数字识别_OneVsAll 1、随机显示100个数字 2、OneVsAll 3、手写数字识别 4、预测 5、运行结果 6、使用scikit-learn库中的逻辑回归模型实现 三、BP
企鹅号小编
2018/01/09
2.3K0
机器学习算法Python实现
高斯混合模型 GMM 的详细解释
来源:机器学习杂货店本文约3500字,建议阅读10+分钟本文为你介绍 KMeans 的一个替代方案之一,高斯混合模型。 高斯混合模型(后面本文中将使用他的缩写 GMM)听起来很复杂,其实他的工作原理和 KMeans 非常相似,你甚至可以认为它是 KMeans 的概率版本。这种概率特征使 GMM 可以应用于 KMeans 无法解决的许多复杂问题。 因为KMeans的限制很多,比如:它假设簇是球形的并且大小相同,这在大多数现实世界的场景中是无效的。并且它是硬聚类方法,这意味着每个数据点都分配给一个集群,这也是不
数据派THU
2023/05/11
9120
高斯混合模型 GMM 的详细解释
Pandas 和 Numpy 中的统计
np.max() / np.min() / np.ptp():返回一个数组中最大值/最小值/极差(最大值减最小值)
杨丝儿
2022/02/18
2.9K0
数学建模--熵权法
总之,熵权法作为一种客观赋权方法,在多指标综合评价和决策分析中具有重要应用价值。通过合理运用熵权法,可以有效地提高评价和决策的科学性和准确性。
用户11315985
2024/10/16
5850
数学建模暑期集训8:熵权法
在本专栏第三篇博文中列举了熵权法的公式数学建模学习笔记(三)熵权法Excel实现,但用Excel实现的讲解视频已经无法观看,这篇博文就来用matlab实现熵权法,比excel手动操作更加方便。
zstar
2022/06/14
6370
数学建模暑期集训8:熵权法
资产瞎配模型(二):对瞎配(一)中净值计算错误的纠正
上上周发的那篇资产瞎配模型,事实证明,果然是瞎配,有大佬指出组合净值计算有一定的问题,所以这里对净值计算部分及进行改正,重新计算结果。
量化小白
2019/01/22
1.6K0
数据科学家极力推荐核心计算工具-Numpy的前世今生(下)
----------------------------------------------------------------------------------------
Python编程爱好者
2020/09/24
8630
数据科学家极力推荐核心计算工具-Numpy的前世今生(下)
相关推荐
统计学方法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验