相关文章推荐
长情的消防车  ·  一串气球简笔画-百度经验·  9 月前    · 
干练的消炎药  ·  美容美髮造型設計系·  1 年前    · 
英俊的野马  ·  风吹麦浪香机械收割忙——塔城地区小麦已收割9 ...·  1 年前    · 
英姿勃勃的企鹅  ·  解析初夏野钓水库的技巧_手机新浪网·  1 年前    · 
酷酷的红金鱼  ·  【历史眼】鲁提辖拳打镇关西故事发生地在平凉·  2 年前    · 
小百科  ›  灰色关联度分析法的优缺点
多主体仿真 dataframe 数列公式 灰色关联分析法
卖萌的饼干
1 年前
全栈程序员站长

基于灰色关联度分析法_灰色关联度分析法的优缺点

前往小程序,Get 更优 阅读体验!
立即前往
腾讯云
开发者社区
文档 建议反馈 控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
全栈程序员站长
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
社区首页 > 专栏 > 基于灰色关联度分析法_灰色关联度分析法的优缺点

基于灰色关联度分析法_灰色关联度分析法的优缺点

作者头像
全栈程序员站长
发布 于 2022-11-01 17:22:23
1.6K 0
发布 于 2022-11-01 17:22:23
举报
文章被收录于专栏: 全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

目录

  • 灰色关联分析介绍
  • 灰色关联分析的步骤
  • 实例

灰色关联分析介绍

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

灰色关联分析的步骤

灰色系统关联分析的具体计算步骤如下:

  1. 确定反映系统行为特征的参考数列和影响系统行为的比较数列。 反映系统行为特征的数据序列,称为参考数列(可以理解为因变量)。影响系统行为的因素组成的数据序列,称比较数列(可以理解为自变量)。
  2. 对参考数列和比较数列进行无量纲化处理。 由于系统中各因素的物理意义不同,导致数据的量纲也不一定相同,不便于比较,或在比较时难以得到正确的结论。因此在进行灰色关联度分析时,一般都要进行无量纲化的数据处理。
  3. 求参考数列与比较数列的灰色关联系数ξ(Xi) 所谓关联程度,实质上是曲线间几何形状的差别程度。因此曲线间差值大小,可作为关联程度的衡量尺度。对于一个参考数列X0有若干个比较数列X1, X2,…, Xn,各比较数列与参考数列在各个时刻(即曲线中的各点)的关联系数ξ(Xi)可由下列公式算出:
在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
  1. 求关联度ri 因为关联系数是比较数列与参考数列在各个时刻(即曲线中的各点)的关联程度值,所以它的数不止一个,而信息过于分散不便于进行整体性比较。因此有必要将各个时刻(即曲线中的各点)的关联系数集中为一个值,即求其平均值,作为比较数列与参考数列间关联程度的数量表示,关联度ri公式如下:
在这里插入图片描述
在这里插入图片描述
  1. 关联度排序 因素间的关联程度,主要是用关联度的大小次序描述,而不仅是关联度的大小。将m个子序列对同一母序列的关联度按大小顺序排列起来,便组成了关联序,记为{x},它反映了对于母序列来说各子序列的“优劣”关系。若r0i>r0j,则称{xi}对于同一母序列{x0}优于{xj},记为{xi}>{xj} ;若r0i表1 代表旗县参考数列、比较数列特征值。

实例

代码语言: javascript
复制
#灰色关联度分析
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)
#求关联度
 
推荐文章
长情的消防车  ·  一串气球简笔画-百度经验
9 月前
干练的消炎药  ·  美容美髮造型設計系
1 年前
英俊的野马  ·  风吹麦浪香机械收割忙——塔城地区小麦已收割90.95万亩,完成目标 ...
1 年前
英姿勃勃的企鹅  ·  解析初夏野钓水库的技巧_手机新浪网
1 年前
酷酷的红金鱼  ·  【历史眼】鲁提辖拳打镇关西故事发生地在平凉
2 年前
Link管理   ·   Sov5搜索   ·   小百科
小百科 - 百科知识指南