当前位置: 首页 > news >正文

熵权法Python代码实现

文章目录

  • 前言
  • 代码
    • 数据
    • 熵权法代码
    • 结果

前言

熵权法做实证的好像很爱用,matlab的已经实现过了,但是matlab太大了早就删了,所以搞一搞python实现的,操作空间还比较大

代码

数据

import pandas as pd
data = [[100,90,100,84,90,100,100,100,100],[100,100,78.6,100,90,100,100,100,100],[75,100,85.7,100,90,100,100,100,100],[100,100,78.6,100,90,100,94.4,100,100],[100,90,100,100,100,90,100,100,80],[100,100,100,100,90,100,100,85.7,100],[100,100,78.6,100,90,100,55.6,100,100],[87.5,100,85.7,100,100,100,100,100,100],[100,100,92.9,100,80,100,100,100,100],[100,90,100,100,100,100,100,100,100],[100,100,92.9,100,90,100,100,100,100]]
data = pd.DataFrame(data)

熵权法代码

from sklearn.preprocessing import MinMaxScaler
import numpy as np# 需要进行评价的特征(一般列名)
selected_features = list(data.columns.values)# 对选取的特征进行归一化
scaler = MinMaxScaler()
norm_data = scaler.fit_transform(data[selected_features]) #定义熵值法函数、熵值法计算变量的权重
def cal_weight(feature_num,sample_num,value):p= np.array([[0.0 for i in range(feature_num)] for i in range(sample_num)])                    for i in range(feature_num):value[:,i] += 1e-10 # 防止log0p[:,i]=(value[:,i])/np.sum(value[:,i],axis=0) # 计算特征值占比e=-1/np.log(sample_num)*sum(p*np.log(p))  #计算熵值g=1-e  # 计算一致性程度w=g/sum(g) #计算权重return wf_num = len(selected_features) # 指标个数
s_num = len(data.index.values) # 方案数、评价主体
w = cal_weight(f_num, s_num, norm_data)
w = pd.DataFrame(w,index=selected_features,columns=['weight']) # 计算出的权重
scores = np.dot(data,w).round(2) # 计算综合分数
result = pd.DataFrame(scores,index=data.index.values,columns=['score']).sort_values(by =['score'],ascending = False) # 对球员的分数进行排名

结果

在这里插入图片描述
在这里插入图片描述
和matlab结果差不多,可能归一化不一样有点差别。

不过这里指标都是正向的,即越大越好,负向指标、区间指标等还并未兼容,以后要是用到了再说吧。

http://www.lryc.cn/news/297669.html

相关文章:

  • 浏览器提示ERR_SSL_KEY_USAGE_INCOMPATIBLE解决
  • 使用深度学习进行“序列到序列”分类
  • Python和Java的区别(不断更新)
  • Ubuntu22.04 gnome-builder gnome C 应用程序习练笔记(三)
  • vue electron 应用在windows系统上以管理员权限打开应用
  • c实现链表
  • 力扣231. 2 的幂(数学,二分查找,位运算)
  • Maven私服部署与JAR文件本地安装
  • 【MySQL】字符串函数的学习
  • AI助力农作物自动采摘,基于YOLOv5全系列【n/s/m/l/x】参数模型开发构建作番茄采摘场景下番茄成熟度检测识别计数分析系统
  • 记录下ibus-libpinyin输入法的重新安装
  • 第三百一十八回
  • 破除Github API接口的访问次数限制
  • 蓝桥杯嵌入式第8届真题(完成) STM32G431
  • 第二节 zookeeper基础应用与实战
  • 改变AI服务器:探索界面互连芯片技术的创新突破
  • 【P1506 拯救oibh总部】
  • 应用层 HTTP协议(1)
  • Linux学习笔记(centOS)—— 文件系统
  • 华视 CVR-100UC 身份证读取 html二次开发模板
  • ubuntu彻底卸载cuda 重新安装cuda
  • 【Java】学习笔记:关于java.sql;
  • python web 框架Django学习笔记
  • ubuntn20 搭建 redmine
  • 每日五道java面试题之java基础篇(三)
  • 如何升级 gpt4?快速升级至ChatGPT Plus指南,爆火的“ChatGPT”到底是什么?
  • 【实习】深信服防火墙网络安全生产实习
  • 怎么把视频音乐提取成mp3?分享详细工具和方法!
  • 代码随想录算法训练营第44天 | 完全背包理论基础 518.零钱兑换II 377.组合总和 Ⅳ
  • 深度解析与推荐:主流Web前端开发框架