1.库的引用

import warnings
warnings.filterwarnings("ignore")
import pandas as pd
import numpy as np
import os
os.chdir(r"E:\BaiduNetdiskDownload\数据")   #指定工作路径

2.定义计算权重函数

#计算权重,并将标准化后数据保存下来
def get_entropy_weight(data):""":param data: 评价指标数据框:return: 各指标权重列表"""# 数据标准化data = (data - data.min())/(data.max() - data.min())# 保存标准化后的数据data.to_excel("标准化后数据.xlsx", sheet_name="sheet1", index= False,encoding="utf-8")print(data)   #直接在运行时打印出标准化后的数据#计算km,n=data.shape   #m是行,n是列#将dataframe格式转化为matrix格式data=data.as_matrix(columns=None)k=1/np.log(m)yij=data.sum(axis=0)#计算pijpij=data/yijtest=pij*np.log(pij)test=np.nan_to_num(test)#计算每种指标的信息熵ej=-k*(test.sum(axis=0))#计算每种指标的权重wi=(1-ej)/np.sum(1-ej)wi_list=list(wi)return  wi_list

3.定义计算得分函数

def get_score(wi_list,data):""":param wi_list: 权重系数列表:param data:评价指标数据框:return:返回得分""" #  将权重转换为矩阵cof_var = np.mat(wi_list)#  将数据框转换为矩阵context_train_data = np.mat(data)#  权重跟自变量相乘last_hot_matrix = context_train_data * cof_var.Tlast_hot_matrix = pd.DataFrame(last_hot_matrix)#  累加求和得到总分,这是直接用原数据计算的last_hot_score = list(last_hot_matrix.apply(sum))return last_hot_score

4.导入数据运行

if __name__ == '__main__': data = pd.read_excel("指标.xlsx", encoding='utf8')data= data.iloc[:, 1:]  #数据选择第二列开始是所有行mm = datawi_list=get_entropy_weight(data)score_list=get_score(mm,wi_list)print(wi_list)   # 权重print(score_list)   #得分,这个得分是原数据*权重 计算的,可以改成标准化的数据计算,也可以将得分映射成百分制。

5. 可能出现的问题

5.1 打印显示不全问题,数据太多时显示不全的解决办法

    #打印时显示所有列pd.set_option('display.max_columns', None)#打印显示所有行pd.set_option('display.max_rows', None)

5.2 pandas.read_csv() 报错 OSError: Initializing from file failed

一般由两种情况引起:一种是路径有问题,另一种是函数参数带有中文。
对于第一种情况很简单,有的是因为没有把文件名称放到路径的后面,把文件名称添加到路径后面就可以了;还有的是文件名称有误,比如多个空格少个空格,大小写,最好是直接复制文件的名称粘贴。
第二种情况,路径、文件名都正确,还是报错的原因是这个参数中有中文,调用pandas的read_csv()方法时,默认使用C engine作为parser engine,而当文件名中含有中文的时候,用C engine在部分情况下就会出错。所以在read里面加上engine="python"即可解决。

python熵权法求权重相关推荐

  1. 【人因工程】熵值法求权重正反向化的分析

    目录 一.问题提出 二.问题分析 1. 第一步: 2. 第二步 3. 第三步 三.进一步分析 总结 一.问题提出 所需数据集见链接: 人因工程熵值法求权重正反向化的分析配套数据-数据集文档类资源-CS ...

  2. 多目标决策问题1.1.1:线性加权法——熵权法确定权重

    多目标决策问题是目前数学建模中比较普遍的一类问题, 此类问题要求我们满足多个目标函数最优与决策变量的线性约束条件或非线性约束条件下进行求解, 多目标决策问题主要有主要目标法.线性加权法.分层序列法.步 ...

  3. R 熵权法计算权重及综合得分

    最近工作中需要根据大数据智能计算,预测或者推荐出供应链付款优先/权重来,以往都是人工根据供应商关系等因素做付款的一个优先级,并不能客观的将付款策略分发到其他供应商,现根据大数据客观计算,记录一下 1, ...

  4. 利用熵权法确定指标权重

    利用熵权法确定指标权重 1. 熵权法的基本原理 熵权法的基本思路是根据指标变异性的大小来确定客观权重. 一般来说,若某个指标的信息熵越小,表明指标值得变异程度越大,提供的信息量越多,在综合评价中所能起 ...

  5. 基于熵权法优劣解距离法_基于优劣解距离法的火电机组单辅机运行状态评估

    龙源期刊网 http://www.qikan.com.cn 基于优劣解距离法的火电机组单辅机运行状 态评估 作者:王瑾石 来源:<中国化工贸易 · 上旬刊> 2019 年第 01 期 摘要 ...

  6. TOPSIS和熵权法的应用(Matlab实现,包括数据预处理)

    TOPSIS法是一种组内综合评价方法,能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距. ①基本过程为归一化后的原始数据矩阵: ②采用余弦法找出有限方案中的最优方案和最劣方案:然后分别 ...

  7. 数学建模笔记 Topsis和熵权法

    Topsis法(Technique for Order Preference by Similarity to Ideal Solution)可翻译为逼近理想解排序法,国内常简称为优劣解距离法. ​ ...

  8. 【指标体系构建】标准化处理+熵权法

    面对构建好的指标体系,如何进行进一步量化操作 1.标准化处理 引用链接:百度安全验证https://baijiahao.baidu.com/s?id=1717456781716191819&w ...

  9. 《零基础数学建模》——TOPSIS+熵权法

    目录 ​ 前言 一.TOPSIS法(优劣解距离法) 1.模型原理 2.建模步骤 二.模型实现 第一步:将原始矩阵正向化 第二步:正向化矩阵标准化 第三步:计算得分并归一化 四.TOPSIS模型的总结与 ...

  10. 基于熵权法对Topsis模型的修正

    基于熵权法对Topsis模型的修正 有n个要评价的对象,m个评价指标的标准化矩阵,可以使用层次分析法给这m个评价指标确定权重 ∑j=1mωj=1\sum_{j=1}^m{\omega_j}=1 j=1 ...

最新文章

  1. Feign的日志级别设置(显示feign调用服务过程中的日志信息)
  2. 2017西安交大ACM小学期 敏感词汇[AC自动机]
  3. 【C++学习之路】第二章——C++基础语法学习(1)之黑客攻击系统
  4. 首次公开,阿里云开源PolarDB总体架构和企业级特性
  5. shiro扩展获得用户登录类型并提供cookie的方式记住用户密码
  6. 操作系统课设之Windows 进程管理
  7. 用C语言写PHP扩展 linux
  8. CSS骚操作之表单验证功能的实现代码
  9. Hyper-V 3.0网络虚拟化PART 4:私有交换机
  10. java 字符串加密解密_Java加密解密字符串
  11. php单列模式_PHP单例模式详解及实例代码
  12. JavaScript 编程精解 中文第三版 十四、文档对象模型
  13. 错误解决:ThinkPHP 3.1 { Fast Simple OOP PHP Framework } -- [ WE CAN DO IT JUST THINK ]
  14. 计算机读不出来u盘装系统,细说电脑重装系统u盘读不出怎么办
  15. win10如何删除注册表残留文件
  16. 电脑死机,虚拟机里面的系统开不了
  17. 使用busybox快速制作initramfs
  18. 会议交流 | DataFunSummit 2022:图机器学习在线峰会
  19. 互动抽奖背后的随机性与算法实现
  20. java visualvm 教程_Java性能分析神器--VisualVM Launcher[1]

热门文章

  1. 双人游戏根据胜负关系匹配
  2. Google's BBR拥塞控制算法模型解析
  3. java gbk 内码_JAVA 中文转GBK内码方法
  4. 免费的虚幻3引擎其实不好用啊
  5. ffmpeg系列之编译安卓版ffmpeg库
  6. python连接微信运动_用Python霸屏微信运动,横扫支付宝榜单 !
  7. android抢qq红包源码,QQ抢红包插件实现,安卓源码,以及详细分析,androidqq抢红包源码,捡代码论坛整理...
  8. 怎样让网站显示在 Google 搜索结果中?
  9. 盒仔机器人_DFROBOT SEN0240 肌电传感器 OYMotion 产品资料 使用教程
  10. Auto.js 支付宝 跳转意图