Python综合评价模型(九)CRITIC法


CRITlC法是综合考虑评价指标的变异性和独立性来分配权重,评价指标的变异性和独立性均较大,所赋权重就越大,并以此对评价对象进行综合评价的方法

第一步 导入第三方库和案例数据

import numpy as np
import pandas as pd
#按指定路径导入数据,以“地区”为索引(文件路径需按实际情况更换)
data = pd.read_excel(r'C:/Users/AROUS/Desktop/综合评价数据.xlsx', index_col = '地区')
data

第二步 标准化数据(min-max标准化)

使用min-max标准化方法标准化数据后,各评价指标的最大值为1,最小值为0

正向指标(指标值越大越好)的min-max标准化计算公式为:

y i j = x i j − min ⁡ x i j max ⁡ x i j − min ⁡ x i j ( 1 ≤ i ≤ n , 1 ≤ j ≤ m ) y_{ij} = \frac{x_{ij} - \min{x_{ij}}}{\max{x_{ij}} - \min{x_{ij}}} \quad (1 \leq i \leq n,1 \leq j \leq m) yij=maxxijminxijxijminxij(1in,1jm) n n n为评价对象的个数, m m m为评价指标的个数

负向指标(指标值越小越好)的min-max标准化计算公式为:

y i j = max ⁡ x i j − x i j max ⁡ x i j − min ⁡ x i j ( 1 ≤ i ≤ n , , 1 ≤ j ≤ m ) y_{ij} = \frac{\max{x_{ij}} - x_{ij}}{\max{x_{ij}} - \min{x_{ij}}} \quad (1 \leq i \leq n, , 1 \leq j \leq m) yij=maxxijminxijmaxxijxij(1in,,1jm) n n n为评价对象的个数, m m m为评价指标的个数

#定义正向指标min-max标准化函数
def minmax_p(x): 
    return (x - x.min()) / (x.max() - x.min())
#定义负向指标min-max标准化函数
def minmax_n(x): 
    return (x.max() - x) / (x.max() - x.min())
#使用正向指标min-max标准化函数标准化数据
data_m = minmax_p(data)
data_m

第三步 计算评价指标的变异性(变异系数)

j j j项评价指标变异系数的计算公式为:

v j = ∑ i = 1 n ( y i j − y j ˉ ) 2 n − 1 y j ˉ v_j = \frac{\sqrt{\frac{\sum_{i=1}^{n}(y_{ij}-\bar{y_j})^2}{n-1}}}{\bar{y_j}} vj=yjˉn1i=1n(yijyjˉ)2 n n n为评价对象的个数

即评价指标的标准差除以评价指标的均值

vi = data_m.std()/ data_m.mean()
vi

第四步 计算评价指标的独立性(1-|相关系数|)

ri = data_m.corr().abs()
fi = (1 - ri).sum()
fi

第五步 计算评价指标的综合信息载荷量(变异性和独立性的乘积)

pi = vi * fi
pi

第六步 计算评价指标的权重

#归一化评价指标的综合信息载荷量
w = pi / pi.sum()
w

第七步 计算综合得分

data['CRITIC法得分'] = data_m.dot(w)
data

第八步 导出综合评价结果

data.to_excel('CRITIC法综合评价结果.xlsx', index = True)
关注公众号“ T r i H u b 数研社”发送“ 230409 ”获取案例数据和代码 \textcolor{RoyalBlue}{关注公众号“TriHub数研社”发送“230409”获取案例数据和代码} 关注公众号TriHub数研社发送“230409”获取案例数据和代码
  • 3
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
CRITIC是一种多准则决策分析方,用于评估和选择多个决策方案。CRITIC的基本思想是将决策方案转换为一组可比较的数字,然后使用这些数字来确定每个决策方案的得分和权重,最后使用这些得分和权重来选择最佳的决策方案。 在Python中,可以使用以下步骤实现CRITIC: 1. 确定要评估的决策方案,并将它们转换为一组可比较的数字。 2. 确定每个决策因素的重要程度,并将它们转换为权重。 3. 计算每个决策方案的得分,通过将每个决策因素的数字与其相应的权重相乘并求和来实现。 4. 对得分进行归一化处理,以确保它们在0到1之间。 5. 根据得分选择最佳的决策方案。 以下是一个简单的示例代码,演示如何使用Python实现CRITIC: ```python # 输入数据 criteria = ['cost', 'reliability', 'performance'] options = {'A': [100, 0.8, 0.9], 'B': [80, 0.9, 0.7], 'C': [120, 0.7, 0.8]} weights = [0.5, 0.3, 0.2] # 计算得分 scores = {} for option, values in options.items(): score = sum([v * w for v, w in zip(values, weights)]) scores[option] = score # 归一化得分 min_score = min(scores.values()) max_score = max(scores.values()) for option, score in scores.items(): normalized_score = (score - min_score) / (max_score - min_score) scores[option] = normalized_score # 选择最佳决策方案 best_option = max(scores, key=scores.get) # 输出结果 print('CRITIC评估结果:') for option, score in scores.items(): print(f'{option}: {score:.3f}') print(f'\n最佳决策方案是:{best_option}') ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值