目录

1.简介

2.算法详解

2.1 指标正向化及标准化

2.2 找到最大最小参考向量

2.3 计算与参考向量的相关系数

2.4 求评分

3.实例分析

3.1 读取数据

3.2 数据标准化

3.3 得到最大最小参考行

3.4 与最大值的灰色相关系数

3.5 与最小值的灰色相关系数

3.6 计算综合评分

完整代码


1.简介

TOPSIS法 —— python :传送门

灰色关联法 —— python:传送门

2.算法详解

2.1 指标正向化及标准化

设有m个待评对象,n个评价指标,可以构成数据矩阵X=(xij)m*n,设数据矩阵内元素,经过指标正向化处理过后的元素为xij'

  • 若xj为负向指标(越小越优型指标)

  • 若xj为正向指标(越大越优型指标)

2.2 找到最大最小参考向量

设正向化标准化后的数据矩阵

最大参考向量由各个指标的最大值构成

最小参考向量由各个指标的最小值构成

2.3 计算与参考向量的相关系数

求出标准化后数据矩阵X和最大参考向量Vmax和最小参考向量Vmin的灰色相关系数。

该过程仿照灰色关联度分析法做就行

  • 参考向量的选择

例如研究x2指标与x1指标之间的灰色关联度。所以将x1列作为参考向量,即要研究与谁的关系,就将谁作为参考。设参考向量为Y1=x1,生成新的数据矩阵 X1=x2.

  • 生成绝对值矩阵

设生成的绝对值矩阵为A

A=[X1-Y1],亦是A=[x2-x1]

设dmax为绝对值矩阵A的最大值,dmin为绝对值矩阵A的最小值。

  • 计算灰色关联矩阵

设灰色关联矩阵为B

  • 计算灰色关联

2.4 求评分

3.实例分析

数据来源:蓝奏云

3.1 读取数据

#导入数据
data=pd.read_excel('D:\桌面\TOPSIS.xlsx') #横坐标为评价指标,纵坐标为评价对象
# print(data)
#提取变量名 x1 -- x7
label_need=data.keys()[1:]
# print(label_need)
#提取上面变量名下的数据
data1=data[label_need].values.T
print(data1)

返回:

3.2 数据标准化

#0.002~1区间归一化
data2=data1.astype('float')
data3=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)

返回:

3.3 得到最大最小参考行

# 得到最大最小参考行
data3=data3.T
V_max=np.max(data3,axis=0) #最大参考行,指标最大
V_min=np.min(data3,axis=0) #最小参考行,指标最小

3.4 与最大值的灰色相关系数

# 与最大值的灰色相关系数
[m,n]=data1.shape #得到行数和列数
data4=data3;
for i in range(m):data4[i,:]=abs(data3[i,:]-V_min);
#得到绝对值矩阵的全局最大值和最小值
d_max=np.max(data4)
d_min=np.min(data4)
#灰色关联矩阵
a=0.5;   #分辨系数
data5=(d_min+a*d_max)/(data4+a*d_max);
xi_min=np.mean(data5.T,axis=1)
print(xi_min)

返回:

3.5 与最小值的灰色相关系数

# 与最小值的灰色相关系数
[m,n]=data1.shape #得到行数和列数
data4=data3;
for i in range(m):data4[i,:]=abs(data3[i,:]-V_max);
#得到绝对值矩阵的全局最大值和最小值
d_max=np.max(data4)
d_min=np.min(data4)
#灰色关联矩阵
a=0.5;   #分辨系数
data5=(d_min+a*d_max)/(data4+a*d_max);
xi_max=np.mean(data5.T,axis=1)
print(xi_max)

返回:

3.6 计算综合评分

# 综合评分
#与最大指标行相关系数越大,最小指标构成的行相关系数越小得分大
s=xi_min/(xi_max+xi_min)
Score=100*s/max(s)
for i in range(len(Score)):print(f"第{i+1}个投标者百分制得分为:{Score[i]}")

返回:

完整代码

#导入数据
data=pd.read_excel('D:\桌面\TOPSIS.xlsx')
# print(data)
#提取变量名 x1 -- x7
label_need=data.keys()[1:]
# print(label_need)
#提取上面变量名下的数据
data1=data[label_need].values.T
print(data1)
#0.002~1区间归一化
data2=data1.astype('float')
data3=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)
# 得到最大最小参考行
V_max=np.max(data3) #最大参考行,指标最大
V_min=np.min(data3) #最小参考行,指标最小
# 与最大值的灰色相关系数
[m,n]=data1.shape #得到行数和列数
data4=data3;
for i in range(m):data4[i,:]=abs(data3[i,:]-V_min);
#得到绝对值矩阵的全局最大值和最小值
d_max=np.max(data4)
d_min=np.min(data4)
#灰色关联矩阵
a=0.5;   #分辨系数
data5=(d_min+a*d_max)/(data4+a*d_max);
xi_min=np.mean(data5.T,axis=1)
print(xi_min)
# 与最小值的灰色相关系数
[m,n]=data1.shape #得到行数和列数
data4=data3;
for i in range(m):data4[i,:]=abs(data3[i,:]-V_max);
#得到绝对值矩阵的全局最大值和最小值
d_max=np.max(data4)
d_min=np.min(data4)
#灰色关联矩阵
a=0.5;   #分辨系数
data5=(d_min+a*d_max)/(data4+a*d_max);
xi_max=np.mean(data5.T,axis=1)
print(xi_max)
# 综合评分
#与最大指标行相关系数越大,最小指标构成的行相关系数越小得分大
s=xi_min/(xi_max+xi_min)
Score=100*s/max(s)
for i in range(len(Score)):print(f"第{i+1}个投标者百分制得分为:{Score[i]}")

灰色关联与TOPSIS法 —— python相关推荐

  1. 灰色关联与TOPSIS法 —— matlab

    目录 1.简介 2.算法详解 2.1 指标正向化及标准化 2.2 找到最大最小参考向量 2.3 计算与参考向量的相关系数 2.4 求评分 3.实例分析 3.1 读取数据 3.2 数据标准化 3.3 得 ...

  2. python灰色关联度分析_灰色关联分析法 python

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 本文2290字,预计阅读需10分钟: 关联分析(association anal ...

  3. Python实现 灰色关联分析 与结果可视化

    之前在比赛的时候需要用Python实现灰色关联分析,从网上搜了下只有实现两个列之间的,于是我把它改写成了直接像Pandas中的计算工具直接计算person系数那样的形式,可以对整个矩阵进行运算,并给出 ...

  4. 【数学建模】灰色关联分析 + Matlab代码实现

    文章目录 一.学习内容: 二.学习时间: 三.学习产出: 3.1 灰色关联分析基本思想 3.2 运用灰色关联分析的基本步骤 3.3 灰色关联分析代码实现(Matlab) 3.3.1 应用一:分析产业对 ...

  5. 灰色关联法 —— python

    目录 1.简介 2.算法详解 2.1 数据标准化 2.2 计算灰色相关系数 2.3 计算灰色关联度系数 3.实例分析 3.1 读取数据 3.2 数据标准化 3.3 绘制 x1,x4,x5,x6,x7 ...

  6. 灰色关联分析法详解及python实践

    1. 关于灰色关联分析 1.1. 什么是灰色关联分析 灰色关联分析是指对一个系统发展变化态势的定量描述和比较的方法,其基本思想是通过确定参考数据列和若干个比较数据列的几何形状相似程度来判断其联系是否紧 ...

  7. python实现灰色关联法(GRA)

    原文:https://mp.weixin.qq.com/s/Uuri-FqRWk3V5CH7XrjArg 1 灰色关联分析法简介 白色系统是指信息完全明确的系统,黑色系统是指信息不完全明确的系统,而灰 ...

  8. python灰色关联度分析代码_灰色关联分析法步骤 - osc_uwnmtz9n的个人空间 - OSCHINA - 中文开源技术交流社区...

    https://wenku.baidu.com/view/dc356290af1ffc4fff47ac0d.html?rec_flag=default&sxts=1538121950212 利 ...

  9. python 灰色关联分析法(GRA)求权重

    我遇到的问题: 假设现在有p个指标,g个参评单位.已经告诉你这g个参评单位在p个指标上的得分分别为多少,那么如何确定这p个指标的权重应该为多少? 原理 1.构成矩阵如下: 2.首先对矩阵做行均值化处理 ...

最新文章

  1. 传Exchange 15将于今年9月发布
  2. Linux阶段总结shell脚本
  3. 数组模拟单链表acwing826. 单链表
  4. 用GDB调试程序(六)
  5. 一个分支强制替代另一个分支
  6. 浅谈多线程——NSThread
  7. 2008日志清理 server sql_SQL Server 2008 收缩日志 清空删除大日志文件
  8. rn 跳转至html5,ReactNative-从RN端跳转到原生界面
  9. 通过命令在navicat中创建数据库及表结构
  10. 软件工程(2018)结对编程第一次作业
  11. sql profiler_这是SQL Profiler的结尾吗?
  12. h5外卖源码php_从零搭建外卖CPS平台小程序开发
  13. 机器学习--用朴素贝叶斯分类法辨别男女声音
  14. JavaScript包管理器综述
  15. google海底光缆图_谷歌地图资讯-2013版“海底光缆地图”发布
  16. 300多分学计算机去哪个学校,300分能上什么大学 2021年300分左右的学校
  17. FZU《C语言程序综合设计》
  18. Spark SQL 之开窗函数
  19. 接口各项性能测试指标
  20. GPS基带P码处理总结——FPGA实现的关键点

热门文章

  1. 此次边路调整系统推荐射手走哪路_王者荣耀地图重大对称改动,终于能射手对射手,上单对上单了...
  2. win10使用网络共享功能的方法
  3. UC浏览器怎么删除收藏历史?UC浏览器删除收藏历史的操作方法
  4. 新版微软Edge浏览器:支持安装Chrome扩展
  5. Java接口的几种常见用法
  6. Websocket——原理及基本属性和方法
  7. MySQL 普通索引和唯一索引的区别详解
  8. jsonp react 获取返回值_Django+React全栈开发:文章列表
  9. php可以支持代码重用技术的命令,Linux下的编程 PHP高级技巧全放送(一)
  10. c语言如何关闭线程,如何用C语言实现多线程