import numpy as np
import pandas as pd
#按指定路径导入数据,以“地区”为索引(文件路径需按实际情况更换)
data = pd.read_excel(r'C:/Users/AROUS/Desktop/综合评价数据.xlsx', index_col = '地区')
data
使用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=maxxij−minxijxij−minxij(1≤i≤n,1≤j≤m), 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=maxxij−minxijmaxxij−xij(1≤i≤n,,1≤j≤m), 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ˉn−1∑i=1n(yij−yjˉ)2, n n n为评价对象的个数
即评价指标的标准差除以评价指标的均值
vi = data_m.std()/ data_m.mean()
vi
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)