python实现CRITIC方法

一个很简单的CRITIC方法python实现,通常用来确定属性权重的标准重要性。除了不要求属性的独立性外,CRITIC方法还反映了属性之间的相关系数。主要步骤为
1、标准化决策矩阵,可以有很多种方法。对于一个标准矩阵W,有

\begin{aligned} y_{ij}=\frac{x_{ij}-\underset{i}{\min}(x_{ij})}{\underset{i}{\min}(x_{ij})-\underset{i}{\min}(y_{ij})},i=1,2,\cdots,m, j=1,2,\cdots,n \end{aligned}

2、计算属性间j,k的相关系数。

\begin{aligned} \eta_{jk}=\frac{\sum_{i=1}^m(y_{ij}-\bar{y}_j)(y_{ik}-\bar{y}_k)}{\sqrt {\sum_{i=1}^m(y_{ij}-\bar{y}_j)^2\sum_{i=1}^m(y_{ik}-\bar{y}_k)^2}} \end{aligned}
3、计算每个属性的标准偏差。

\begin{aligned} s_j=\sqrt {\frac{1}{m-1}\sum_{i=1}^m(y_{ij}-\bar{y}_j)^2}, j=1,2,\cdots,n \end{aligned}

4、计算属性的偏离度

\begin{aligned} C_j=s_j \sum_{k=1}^n(1-\eta_{jk}), j=1,2,\cdots,n \end{aligned}

5、获得属性权重

 

代码如下

# coding=gbk
import pandas as pd
import numpy as np

if __name__ == '__main__':
    df = pd.DataFrame([[1, 0.875, 0.625, 0.75, 0.625],
          [0.571, 0.857, 0.714, 0.857, 1],
          [1, 0.4, 0.6, 0.7, 0.6],
          [0.25, 0.75, 0.875, 1, 0.75]])
    std_d=np.std(df,axis=1)
    mean_d=np.mean(df,axis=1)
    cor_d=np.corrcoef(df)
    w_j=(1-cor_d).sum(0) *std_d
    print(w_j)
    w=(mean_d/(1-mean_d)*w_j)/sum(mean_d/(1-mean_d)*w_j)
    print(w)


 

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值