python实现灰色关联

作者: d33911380280 | 来源:发表于2016-11-04 16:23 被阅读1616次

    灰色关联分析(Grey Relational Analysis, GRA)

    通常可以运用此方法来分析各个因素对于结果的影响程度,也可以运用此方法解决随时间变化的综合评价类问题,其核心是按照一定规则确立随时间变化的母序列,把各个评估对象随时间的变化作为子序列,求各个子序列与母序列的相关程度,依照相关性大小得出结论。
      此方法通过对动态过程发展态势的量化分析,完成对系统内时间序列有关统计数据几何关系的比较,求出参考数列与各比较数列之间的灰色关联度。与参考数列关联度越大的比较数列,其发展方向和速率与参考数列越接近,与参考数列的关系越紧密。
      灰色关联分析方法要求样本容量可以少到4个,对数据无规律同样适用,不会出现量化结果与定性分析结果不符的情况。其基本思想是将评价指标原始观测数进行无量纲化处理,计算关联系数、关联度以及根据关联度的大小对待评指标进行排序。
      灰色关联度的应用涉及社会科学和自然科学的各个领域,尤其在社会经济领域,如国民经济各部门投资收益、区域经济优势分析、产业结构调整等方面,都取得较好的应用效果。

    (1)原始数据见下图。


    Paste_Image.png

    (2)python处理代码。

    # -*- coding: utf-8 -*-
    import pandas as pd
    from numpy import *
    
    gray=pd.read_excel("d:/Gray2.xlsx")
    #读取为df格式
    gray=(gray - gray.min()) / (gray.max() - gray.min())
    #标准化
    std=gray.iloc[:,0]#为标准要素
    ce=gray.iloc[:,1:]#为比较要素
    n=ce.shape[0]
    m=ce.shape[1]#计算行列
    
    #与标准要素比较,相减
    a=zeros([m,n])
    for i in range(m):
        for j in range(n):
            a[i,j]=abs(ce.iloc[j,i]-std[j])
    
    #取出矩阵中最大值与最小值
    c=amax(a)
    d=amin(a)
    
    #计算值
    result=zeros([m,n])
    for i in range(m):
        for j in range(n):
            result[i,j]=(d+0.5*c)/(a[i,j]+0.5*c)
    
    #求均值,得到灰色关联值
    result2=zeros(m)
    for i in range(m):
            result2[i]=mean(result[i,:])
    RT=pd.DataFrame(result2)
    RT.to_csv("D:/2.csv")
    

    (3)输出结果到csv。


    Paste_Image.png

    相关文章

      网友评论

        本文标题: python实现灰色关联

        本文链接:https://www.haomeiwen.com/subject/pweiuttx.html