Python综合评价模型(八)熵权法

目录

      • 第一步 导入第三方库和案例数据
      • 第二步 标准化数据(min-max标准化)
      • 第三步 计算评价指标的特征比重
      • 第四步 计算评价指标的熵值
      • 第五步 计算评价指标的差异系数
      • 第六步 计算评价指标的权重
      • 第七步 计算评价对象的综合得分
      • 第八步 导出综合评价结果
          • 下期预告: P y t h o n 综合评价模型(九) C R I T I C 法 \textcolor{RoyalBlue}{下期预告 : Python综合评价模型(九)CRITIC法} 下期预告:Python综合评价模型(九)CRITIC
          • 关注公众号“ T r i H u b 数研社”发送“ 230402 ”获取案例数据和代码 \textcolor{RoyalBlue}{关注公众号“TriHub数研社”发送“230402”获取案例数据和代码} 关注公众号TriHub数研社发送“230402”获取案例数据和代码

熵权法是根据评价指标的变异程度(差异系数)来分配权重,评价指标变异程度越大,所赋权重就越大,并以此对评价对象进行综合评价的方法

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

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

Python综合评价模型(八)熵权法_第1张图片

第二步 标准化数据(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 = data.apply(minmax_p, axis = 0)
data_m

Python综合评价模型(八)熵权法_第2张图片

第三步 计算评价指标的特征比重

i i i个评价对象的第 j j j项评价指标的特征比重的计算公式为:

p i j = y i j ∑ i = 1 n y i j p_{ij} = \frac{y_{ij}}{\sum_{i=1}^{n} y_{ij}} pij=i=1nyijyij n n n为评价对象的个数

pij = data_m / data_m.sum()
pij 

Python综合评价模型(八)熵权法_第3张图片

第四步 计算评价指标的熵值

j j j项评价指标的熵值的计算公式为:

e j = − 1 ln ⁡ ( n ) ∑ i = 1 n p i j ln ⁡ ( p i j ) e_j = -\frac{1}{\ln(n)} \sum_{i=1}^{n} p_{ij} \ln(p_{ij}) ej=ln(n)1i=1npijln(pij) n n n为评价对象的个数

#把pij中的0替换为一个非零的极小值,避免出现ln(0)的警告
#函数len用于返回对象的长度或元素个数
pij = pij.replace(0, 1e-100)
ei = -1 / np.log(len(data_m)) * np.sum(pij * np.log(pij), axis = 0)
ei

Python综合评价模型(八)熵权法_第4张图片

第五步 计算评价指标的差异系数

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

d j = 1 − e j d_j = 1 - e_j dj=1ej

di = 1 - ei
di

Python综合评价模型(八)熵权法_第5张图片

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

#归一化评价指标的差异系数
w = di / di.sum()
w

Python综合评价模型(八)熵权法_第6张图片

第七步 计算评价对象的综合得分

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

Python综合评价模型(八)熵权法_第7张图片

第八步 导出综合评价结果

data.to_excel('熵权法综合评价结果.xlsx', index = True)
下期预告: P y t h o n 综合评价模型(九) C R I T I C 法 \textcolor{RoyalBlue}{下期预告 : Python综合评价模型(九)CRITIC法} 下期预告:Python综合评价模型(九)CRITIC
关注公众号“ T r i H u b 数研社”发送“ 230402 ”获取案例数据和代码 \textcolor{RoyalBlue}{关注公众号“TriHub数研社”发送“230402”获取案例数据和代码} 关注公众号TriHub数研社发送“230402”获取案例数据和代码

你可能感兴趣的:(Python综合评价,手把手陪你学Python,python,数据分析,pandas)