评价篇:灰色关联度

理论部分

灰色系统理论提出了对各子系统进行灰色关联度分析的概念,意图透过一定的方法,去寻求系统中各子系统(或因素)之间的数值关系。

灰色关联度步骤:

1.首先找到各个指标的参考指X_0。(这里找到的是正向指标的最大值)

2.将参考指标减去每一个样本对应的值,得出一个新的矩阵,再找到每一个样本中最小值的最小值。

3.算出每一个样本所对应的关联系数:

\zeta_i(k)=\frac{\min _i \min _k\left|X_0(k)-X_i(k)\right|+\rho \max _i \max _k\left|X_0(k)-X_i(k)\right|}{\left|X_0(k)-X_i(k)\right|+\rho \max _i \max _k\left|X_0(k)-X_i(k)\right|}

4.最后算出每一个样本的关联度,ri值越接近1,说明样本与参考指标相关性越好。然后进行排序。

r_i=\frac{1}{n} \sum_{k=1}^n \zeta_i(k)

实际上灰色关联度分析就是判断所有样本距离最优样本之间的距离来进行评价样本的好坏。

代码部分

相信大家都对理论部分不怎么感兴趣,那我就直接上一个示例吧!

def grey_relational_analysis(data):
    """
    input:正向化之后的数据
    output:每个样本的得分(行)
    """
    n = len(data)  # 数据个数
    m = len(data[0])  # 数据维度

    # 数据归一化
    data_normalized = (data - np.min(data, axis=0)) / (np.max(data, axis=0) - np.min(data, axis=0))
    data_pos = np.abs(1 - data_normalized) # 与最优解的绝对值矩阵
    data_neg = np.abs(data_normalized - 0) # 与最差解的绝对值矩阵

    # 与最大值和最小值的相关系数
    e_pos = ((data_pos.min() + 0.5 * data_pos.max())/(data_pos + 0.5 * data_pos.max())).mean(axis = 1)
    e_neg = ((data_neg.min() + 0.5 * data_neg.max())/(data_neg + 0.5 * data_neg.max())).mean(axis = 1)

    # 计算关联系数
    score = 1/(1+np.square(e_neg/e_pos))
    score = score / sum(score)
    return score

data = np.array([[220,190,180,170], 
                 [6, 8,8,7], 
                 [30,25,28,23],
                 [10,9,7,8],
                 [10,8,7,7],
                 [5,3,4,2]]).T  # 示例矩阵,其中行代表一个属性维度,每一列代表一个样本(注意进行了转置哦)

result = grey_relational_analysis(data)
print(result) # 得到最终的结果是四个样本的得分,其中灰色关联度越高,得分越高。

通过灰色关联度分析,我们可以得到每一个样本的优劣得分,之所以叫做关联度分析,我的理解是通过比较最优样本的关联度来得到样本的优劣。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值