【建模算法】熵权法(Python实现)
【建模算法】熵权法(Python实现)
熵权法是通过寻找数据本身的规律来赋权重的一种方法。
熵是热力学单位,在数学中,信息熵表示事件所包含的信息量的期望。根据定义,对于某项指标,可以用熵值来判断某个指标的离散程度,其熵值越小,指标的离散程度越大,该指标对综合评价的影响(权重)越大。
熵本源于热力学,后由申农(C. E. Shannon)引入信息论,根据熵的定义与原理,当系统可能处于几种不同状态,每种状态出现的概率为pi(i=1,2,...,m)p_i(i=1,2,...,m)pi(i=1,2,...,m),则该系统的熵就可定义
e=−1lnm∑i=1mpilnpi.e=-\frac{1}{lnm}\sum^m_{i=1}p_ilnp_i. e=−lnm1i=1∑mpilnpi.
熵权法是一种客观赋权方法。在具体使用过程中,熵权法根据各指标的变异程度,利用信息熵计算出各指标的熵权,从而得出较为客观的指标权重。
一、问题描述
请根据下表给出的10个学生8门课的成绩,给出这10个学生评奖学金的评分排序。
表1:学生成绩表
二、熵权法的评价步骤
设有nnn个评价对象,mmm个评价指标变量,第iii个评价对象关于第jjj个指标变量的取值为aij(i=1,2,..,n;j=1,2,..,m)a_{ij}(i=1,2,..,n;j=1,2,..,m)aij(i=1,2,..,n;j=1,2,..,m),构造数据矩阵A=(aij)n×mA=(a_{ij})_{n\times m}A=(aij)n×m。
基于熵权法的评价方法步骤如下:
(1)利用原始数据矩阵A=(aij)n×mA=(a_{ij})_{n\times m}A=(aij)n×m计算pij(i=1,2,...,n,j=1,2,...,m)p_{ij}(i=1,2,...,n,j=1,2,...,m)pij(i=1,2,...,n,j=1,2,...,m),即第iii个评价对象关于第jjj个指标值的比重
Pij=aij∑i=1naij,i=1,2,...,n,j=1,2,...,mP_{ij}=\frac{a_{ij}}{\sum^n_{i=1}a_{ij}},i=1,2,...,n,j=1,2,...,m Pij=∑i=1naijaij,i=1,2,...,n,j=1,2,...,m
(2)计算第jjj项指标的熵值
ej=−1lnn∑i=11PijlnPij,j=1,2,...,me_j=-\frac{1}{lnn}\sum^{1}_{i=1}P_{ij}lnP_{ij},j=1,2,...,m ej=−lnn1i=1∑1PijlnPij,j=1,2,...,m
(3)计算第jjj项指标的变异系数
gj=1−ej,j=1,2,...,mg_j=1-e_j,j=1,2,...,m gj=1−ej,j=1,2,...,m
对于第jjj项指标,eje_jej越大,指标值的变异程度就越小。
(4)计算第jjj项指标的权重
wj=gj∑j=1mgj,j=1,2,...,mw_j=\frac{g_j}{\displaystyle \sum^m_{j=1}g_j},j=1,2,...,m wj=j=1∑mgjgj,j=1,2,...,m
(5)计算第iii个评价对象的综合评价值
Fi=∑j=1mwjpijF_i=\sum^m_{j=1}w_jp_{ij} Fi=j=1∑mwjpij
评价值越大越好。
三、求解结果
指标变量x1、x2、...、x8x_1、x_2、...、x_8x1、x2、...、x8分别表示学生的语文、数学、物理、化学、英语、政治、生物、历史成绩。用aija_{ij}aij表示第iii个学生关于指标变量xjx_jxj的取值,构造数据矩阵A=(aij)10×8A=(a_{ij})_{10\times 8}A=(aij)10×8。
利用Python程序,求得的各指标变量的权重值见表2,各个学生的综合评价值及排名次序见表3。各个学生评价值从高到低的次序为:
9 1 3 7 6 5 4 10 8 2.
表2:各指标的评价权重
![](/assets/blank.gif)
表3 :学生的综合评价值及排名次序
![](/assets/blank.gif)
运行结果:
![](/assets/blank.gif)
四、实现代码
#完整代码:
import numpy as np
import pandas as pddata = pd.read_excel('stu_data.xlsx') #读取原始数据
label_need=data.keys()[1:]
df=data[label_need]
a=np.array(df)
[n, m]=a.shape
cs=a.sum(axis=0) #逐列求和
P=1/cs*a #求特征比重矩阵
e=-(P*np.log(P)).sum(axis=0)/np.log(n) #计算熵值
g=1-e #计算差异系数
w = g / sum(g) #计算权重
F = P @ w #计算各对象的评价值
print("\nP={}\ne={}\ng={}\nw={}\nF={}".format(P,e,g,w,F))
print('各个学生评价值从高到低的次序为:')
print(np.argsort(-F)+1)
【建模算法】熵权法(Python实现)相关推荐
- 建模笔记——熵权法(Python实现)
一.模型介绍 熵权法是一种通过对已知数据的处理,从而获得影响因子权重的方法,其基本思路是根据指标变异性的大小来确定客观权重. 熵权法的优点在于其根据各项指标指标值的变异程度来确定指标权数的,是一种客观 ...
- (1)评价算法—熵权法
文章目录 1.什么是熵权法 1.1 优点 1.2 缺点 1.3 适用范围 2.使用熵权法过程 2.1 数据预处理 2.1.1清洗指标极值 2.1.2 归一化指标处理 2.1.2.1 临界值法 2.1. ...
- 熵权法 —— python
目录 一.熵权法介绍 二.熵权法赋权步骤 1.指标正向化 mapminmax介绍 2.数据标准化 3.计算信息熵 4.计算权重以及得分 四.实例分析 1.导入相关库 2.读取数据 2.指标正向化 2. ...
- 数学建模系列---熵权法
目录 一.简介 二.说明 1.正向指标: 2.信息量 3.信息熵 三.具体计算步骤 1.标准化矩阵 1.1该步骤的意义 1.2标准化的2种方法 2.计算各元素概率 3.计算各指标的权重 3.1计算每个 ...
- 数学建模之熵权法(EWM)matlab实例实现
本文参考http://blog.sina.com.cn/s/blog_710e9b550101aqnv.html 熵权法是一种客观赋值的方法,即它通过数据所包含的信息量来确定权重,形象的说如果每个人考 ...
- 数学建模笔记-熵权法确定评价类问题指标的权重 清风课程笔记整理
评价类问题: 1.层次分析法入门学习: https://blog.csdn.net/weixin_47066458/article/details/113177117 2.Topsisi入门学习: h ...
- 【建模算法】变异系数法(Python实现)
[建模算法]变异系数法(Python实现) 变异系数法是根据统计学方法计算得出系统各指标变化程度的方法,是直接利用各项指标所包含的信息,通过计算得到指标的权重,因此是一种客观赋权的方法. 变异系数 ...
- 建模笔记——熵值法熵权法(python)
熵值法&熵权法-python实现 时隔老久,重新整理一下笔记.仅供个人自学使用,读者自行参考 Reference: 存了不知道多久的本地文件 司守奎,python数学实验与建模,2020 ht ...
- 权重设计:客观赋权法的说明(熵权法/变异系数法/CRCIII法/TOPSIS法)
在数据分析中,我们经常会遇到多个特征对于结果造成不同影响的情况,如何识别这些特征各自的权重,对我们的后续结果评估,打分矩阵构建都具有重要意义.我们所说的赋权法是用于解决多指标综合评价问题中的各指标权重 ...
最新文章
- 【官方权威教程】 PyTorch 深度学习, 学习PyTorch的必备宝典!
- 各样本观察值均加同一常数_对色师傅分享:如何使不同观察者在灯箱下观察的色光一致?...
- nginx平滑升级make upgrade出错的解决办法
- IntelliJ IDEA Community社区版集成Tomcat or Jetty教程
- jQuery子页面刷新父页面--局部刷新+整体刷新 [转]
- hnu2021小学期程序设计 棋盘
- Linux 系统编程技巧与概念 第14章 字节次序
- C++多态虚函数demo
- MFC图形编辑界面工具
- 软考网络工程师下午题知识点汇总
- 关于opencv在vs201x中的设置 2020-02-04
- Pandas缺失值inf与nan处理实践
- 物联网NB-IoT技术商用正全面铺开 竞争日趋激烈
- Python读取图片内容并进行修改
- 在kile上通过串口实现scanf输入和printf打印
- 一个简单的Hello World程序
- 无约束优化问题(一)
- 我的心中每天开出一朵花(一)
- 安装SQL Server和SQL Server Management Studio(SSMS)
- 存储器管理中的局部性原理
热门文章
- 《你的灯亮着吗?》读书笔记
- 我以为一维数组就已经天下无敌了,没想到二维数组比他还勇猛,这是谁的部将!?
- 美国服务器网站怎么黑屏了,关于美国服务器IP的常见问题的详细解答!
- 如何将ArcGis进行中英文切换
- ubuntu14.04 安装搜狗拼音输入法及异常问题解决
- 关于 react 中 swiper 版本过高(7.0.x)导致的问题
- RT-thread SPI SFUD读写W25Q128
- Crack:Inobitec DICOM Viewer 2.9.0 中文版
- 探索windows虚拟内存
- Python海龟绘图,绘出最靓丽的景色