python实现灰色关联

96
hz82114280
2016.11.04 16:23* 字数 449

灰色关联分析(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数据挖掘
Web note ad 1