灰色关联
对于两个系统之间的因素,其随时间或不同对象而变化的关联性大小的量度,称为关联度。在系统发展过程中,若两个因素变化的趋势具有一致性,即同步变化程度较高,即可谓二者关联程度较高;反之,则较低。因此,灰色关联分析方法,是根据因素之间发展趋势的相似或相异程度,亦即“灰色关联度”,作为衡量因素间关联程度的一种方法。这里要注意的一点是,灰色关联分析是描述因素之间发展趋势的相似或相异程度,也就是说这里不分正影响与负影响。
实现过程
导入所需的库
import pandas as pd
import numpy as np
读入数据
data = pd.read_excel("./diabetes.xlsx")
data.head()
进性数据预处理:无量纲化,在此用均值法处理。
data = data/data.mean()
data.head()
关联系数计算公式:
ξ i ( k ) = min i min k Δ i ( k ) + ρ max i max k Δ i ( k ) Δ i ( k ) + ρ max i max k Δ i ( k ) \xi_{i}(k)=\frac{\min _{i} \min _{k} \Delta_{i}(k)+\rho \max _{i} \max _{k} \Delta_{i}(k)}{\Delta_{i}(k)+\rho \max _{i} \max _{k} \Delta_{i}(k)} ξi(k)=Δi(k)+ρmaximaxkΔi(k)miniminkΔi(k)+ρmaximaxkΔi(k)
Δ i ( k ) = ∣ y ( k ) − x i ( k ) ∣ \Delta_{i}(k)=\left|y(k)-x_{i}(k)\right| Δi(k)=∣y(k)−xi(k)∣
x i x_i xi:第 i i i列数据; k k k:第 i i i列中第 k k k个值; ρ \rho ρ为分辨系数,取值为 0 ≤ ρ ≤ 1 0≤\rho≤1 0≤ρ≤1,一般取 0.5 0.5 0.5
关联度计算公式:
r i = 1 n ∑ k = 1 n ξ i ( k ) , k = 1 , 2 , … n r_{i}=\frac{1}{n} \sum_{k=1}^{n} \xi_{i}(k), \quad k=1,2, \ldots n ri=n1k=1∑nξi(k),k=1,2,…n
# 由于DataFrame和Series无法进行混合运算,在此将数据转换为ndarray,然后进行reshape才能够进行运算
y = np.array(data.iloc[:,-1]).reshape(-1,1)
x = np.array(data.iloc[:,:-1])
# ρ取0.5
rho = 0.5
delt_k = np.abs(y-x)
delt_k
# 此最小值是二级最小值,在此相当于全局最小值,即整个delt_k中的最小值
mmin = delt_k.min()
mmax = delt_k.max()
# 计算ξ
xi_k = (mmin + rho * mmax) / (delt_k + rho * mmax)
# 按照行求均值
ri = xi_k.mean(axis=0)
ri
array([0.70049136, 0.68669945, 0.73271802, 0.72497548, 0.71074412,0.70539507, 0.65997075, 0.7326652 , 0.72569364, 0.71694221])
以上的值即为各属性对应的关联度,由此可见:关联度最高的为BMI,关联度最低的为S3。
reference:
糖尿病数据
灰色关联分析法(GRA)