GRA灰色关联度分析学习 附python代码

主要学习了这位大佬的文章,讲的也很通俗易懂了

以下的示例以及一些图片也是从大佬那边抄过来的,主要记录一下自己的学习感受.

灰色关联度分析,听名字很高大上,实际上就是算关联度的一个方法.就是想看看某几个因素中,哪个因素对事情的影响更大.比如
在这里插入图片描述
这个例子就算想看,其他这么一堆因子中,对旅游总收入的影响,哪个更大一些.个人从结果上看,还挺像熵权法的…

现在知道了就是想算影响关系,那就完成了第一步,确定子母序列,母是结果,子是影响因子.

然后第二步,就要对数据进行预处理了.就想熵权法要归一化,这个也要…看大神的说法,一般在这里是用均值化和初值化

初值化 就是每个因素都除以因素中,第一个因子的值就好了.比如在校大学生人数就是每个都除以341
均值化就是每个因素都除以因素的平均值

都挺好理解的,实际上,如果用标准化,或者归一化,会有不同的排序情况…至于为啥选初值化和均值化,不懂…

数据与处理完后,ok,对着公式操作就好.

在这里插入图片描述
先看rho等于0的情况

  • 分子(就是min min那个)就是每一列(列指上面的数据图的列)第一行的数字(代表了结果)分别减下面每行(代表了影响因子)的绝对值得到一个值,然后再遍历每一列,得到这么多个值中的最小值.所以对于固定的数据来说,这个值是固定的.
    大神博客中提到,初值化的话,这个分子一定是0,也很好理解,初值化都是除以第一列的值,那第一列都是1,所以1-1=0,0肯定是最小值了

  • 分母就是第i行k列的值的具体值,结果减去影响因子的绝对值.几何意义上说,就是影响因子和结果的距离,距离越远,相关度就越低.

再考虑rho,这里就直接不想多了,rho一般取0.5然后加上去以后可以防止分子为0的情况.别的就不多研究了…max max 跟min min那个算式,前面求的是最大值,这里求的是最小值.

这样就能得到一个关联度矩阵,每个因子关联矩阵里对应位置的平均值,就是这个因子的关联度.

下附代码

这是可以直接复制使用的代码

import numpy as np

mom_ = [3439,4002,4519,4995,5566]
son_ = [[341,409,556,719,903],[183,196,564,598,613],[3248,3856,6029,7358,8880]]

mom_ = np.array(mom_)
son_ = np.array(son_)

son_ = son_.T / son_.mean(axis=1)
mom_ = mom_/mom_.mean()

for i in range(son_.shape[1]):
    son_[:,i] = abs(son_[:,i]-mom_.T)

Mmin = son_.min()
Mmax = son_.max()
cors = (Mmin + 0.5*Mmax)/(son_+0.5*Mmax)
Mmean = cors.mean(axis = 0)
print(Mmean)

在这里插入图片描述
jupyter的运行过程展示,方便理解

  • 5
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

rglkt

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

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

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

打赏作者

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

抵扣说明:

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

余额充值