对于两个系统之间的因素,其随时间或不同对象而变化的关联性大小的量度,称为关联度。在系统发展过程中,若两个因素变化的趋势具有一致性,即同步变化程度较高,即可谓二者关联程度较高;反之,则较低。因此,灰色关联分析方法,是根据因素之间发展趋势的相似或相异程度,亦即“灰色关联度”,作为衡量因素间关联程度的一种方法。 通常可以运用此方法来分析各个因素对于结果的影响程度,也可以运用此方法解决随时间变化的综合评价类问题。
灰色系统关联分析的具体计算步骤如下:

其中 ρ为分辨系数,ρ>0,ρ越小,分辨力越大,一般ρ的取值区间为(0,1),具体取值可视情况而定。通常取0.5。 minmin是第二级最小差,记为Δmin。 maxmax是两级最大差,记为Δmax。

为各比较数列Xi曲线上的每一个点与参考数列X0曲线上的每一个点的绝对差值,记为Δoi(k)。 所以关联系数ξ(Xi)也可简化如下列公式:


#灰色关联度分析
import pandas as p
import numpy as np
from numpy import *
import matplotlib.pyplot as plt
%matplotlib inline
# 从硬盘读取数据进入内存
wine = pd.read_csv("...\\是.csv",encoding="ANSI")
wine.head()
wine=wine.dropna()
wine.dropna()
# 无量纲化()
newDataFrame=pd.DataFrame(index=wine.index)
columns=wine.columns.tolist()
for c in columns:
d = wine[c]
MAX = d.max()
MIN = d.min()
MEAN = d.mean()
newDataFrame[c] = ((d - MEAN) / (MAX - MIN)).tolist()
print(newDataFrame)
# 提取参考队列和比较队列
newDataFrame=newDataFrame.iloc[:,1:].T
ck=newDataFrame.iloc[0,:]
cp=newDataFrame.iloc[1:,:]#比较
#比较队列与参考列相减
t=pd.DataFrame()
for j in range(cp.index.size):
temp=pd.Series(cp.iloc[j,:]-ck)
t=t.append(temp,ignore_index=True)
#求最大差和最小差
mmax=t.abs().max().max()
mmin=t.abs().min().min()
rho=0.5
#求关联系数
ksi=((mmin+rho*mmax)/(abs(t)+rho*mmax))
pd.DataFrame(ksi)
# 灰色关联结果矩阵可视化
import seaborn as sns
def ShowGRAHeatMap(DataFrame):
colormap = plt.cm.RdBu
ylabels = DataFrame.columns.values.tolist()
f, ax = plt.subplots(figsize=(14, 14))
ax.set_title('GRA HeatMap')
# 设置展示一半,如果不需要注释掉mask即可
#mask = np.zeros_like(DataFrame)
#mask[np.triu_indices_from(mask)] = True
with sns.axes_style("white"):
sns.heatmap(DataFrame,
cmap="rainbow",
annot=True,
#mask=mask,
)
plt.rcParams['font.sans-serif']='SimHei'
plt.show()
data=pd.DataFrame(ksi)
ShowGRAHeatMap(data)
#求关联度
r=ksi.sum(axis=1)/ksi.columns.size
print("关联度为:\n",r)
#关联度排序,
result=r.sort_values(ascending=False)
print("关联度排序结果为:\n",result)关联系数矩阵:



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。