python熵权法过程中,权重出现nan值问题

2023-11-10

最近在利用熵权法选取最优指标数据时,计算权重得到的是全为nan值的权重,经过分析过程,找到问题所在。

数据展示:

熵权法步骤:

step 1 :标准化处理

step 2 : 计算每个维度的信息熵

step 3 :差异系数

step 4 :计算权重

step 5 : 计算综合评分

python实现:

#导入数据
data = pd.read_excel(r'data\data.xlsx',sheet_name = None)
df5 = data['2021']
df = df5.drop('class',axis = 1) #axis参数默认为0
df.head()

#调包
from sklearn import preprocessing
import  pandas

min_max_normalizer=preprocessing.MinMaxScaler(feature_range=(0,1))
#feature_range设置最大最小变换值,默认(0,1)
scaled_data=min_max_normalizer.fit_transform(df)
#将数据缩放(映射)到设置固定区间
df_normalized=pandas.DataFrame(scaled_data)
#将变换后的数据转换为dataframe对象
# print(df5_normalized)
df_normalized
df_normalized.columns=['X1','X2','X3','X4','X5','X6','X7','X8','X9','X10','X11','X12','X13','X14','X15','X16','X17','X18','X19','X20','X21','X22','X23','X24','X25','X26',
                        'X27','X28','X29','X30','X31','X32','X33','X34','X35','X36','X37','X38','X39','X40','X41','X42','X43','X44','X45','X46','X47','X48',
                        'X49','X50','X51','X52','X53','X54','X55','X56','X57','X58','X59','X60','X61','X62','X63','X64']
df_normalized.to_excel('2021年标准化数据.xlsx',index=False)
df_normalized

import copy
[m,n]=df_normalized.shape
#计算信息熵
df_normalized = np.array(df_normalized)
p=copy.deepcopy(df_normalized)
for j in range(0,n):
    p[0:,j]=df_normalized[0:,j]/np.sum(df_normalized[0:,j])
print(p)
E=copy.deepcopy(df_normalized[0,:])
p=np.nan_to_num(p)
# for j in range(0,n):
E=(-1/np.log(m))*sum(p*np.log(p))#此处对p值加上一个极小值,否则p中的0.0取对数后讲产生一个-inf无穷大值
# E = -1/np.log(m)*p*np.log(p)
print(E)
# #计算权重
# w=(1-E)/sum(1-E)
# print(w)
print('np.log(p)维度:',np.log(p).shape)
print('p维度:',p.shape)
print('p*np.log(p)维度:',(p*np.log(p)).shape)
# p*np.log(p)
# np.log(p)
#计算评分
score=np.dot(p,w).round(5)
print(score)
score=pd.DataFrame(score,index=df.index,columns=['综合得分']).sort_values(by =['综合得分'],ascending = False)
score

 问题出现在64个指标输出时权重值全为nan.

 经检查发现经过标准化处理后的数据中含有0.0值

对0取对数将会产生一个无穷小量,即 -inf。

所有利用权重公式计算后得到的权重都是 nan(Not A Number)值

解决方法:

        在计算权重时对p加上1个极小值。

E=(-1/np.log(m))*sum(p*np.log(p+1e-10))

 问题成功解决。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python熵权法过程中,权重出现nan值问题 的相关文章

  • Python BigQuery 存储。并行读取多个流

    我有以下玩具代码 import pandas as pd from google cloud import bigquery storage v1beta1 import os import google auth os environ G
  • 使用 openCV 对图像中的子图像进行通用检测

    免责声明 我是计算机视觉菜鸟 我看过很多关于如何在较大图像中查找特定子图像的堆栈溢出帖子 我的用例有点不同 因为我不希望它是具体的 而且我不确定如何做到这一点 如果可能的话 但我感觉应该如此 我有大量图像数据集 有时 其中一些图像是数据集的
  • 如何生成给定范围内的回文数列表?

    假设范围是 1 X 120 这是我尝试过的 gt gt gt def isPalindrome s check if a number is a Palindrome s str s return s s 1 gt gt gt def ge
  • Python 多处理示例不起作用

    我正在尝试学习如何使用multiprocessing但我无法让它发挥作用 这是代码文档 http docs python org 2 library multiprocessing html from multiprocessing imp
  • 如何使用 Scrapy 从网站获取所有纯文本?

    我希望在 HTML 呈现后 可以从网站上看到所有文本 我正在使用 Scrapy 框架使用 Python 工作 和xpath body text 我能够获取它 但是带有 HTML 标签 而且我只想要文本 有什么解决办法吗 最简单的选择是ext
  • 打破嵌套循环[重复]

    这个问题在这里已经有答案了 有没有比抛出异常更简单的方法来打破嵌套循环 在Perl https en wikipedia org wiki Perl 您可以为每个循环指定标签 并且至少继续一个外循环 for x in range 10 fo
  • 为 pandas 数据透视表中的每个值列定义 aggfunc

    试图生成具有多个 值 列的数据透视表 我知道我可以使用 aggfunc 按照我想要的方式聚合值 但是如果我不想对两列求和或求平均值 而是想要一列的总和 同时求另一列的平均值 该怎么办 那么使用 pandas 可以做到这一点吗 df pd D
  • Python tcl 未正确安装

    我刚刚为 python 安装了graphics py 但是当我尝试运行以下代码时 from graphics import def main win GraphWin My Circle 100 100 c Circle Point 50
  • keras加载模型错误尝试将包含17层的权重文件加载到0层的模型中

    我目前正在使用 keras 开发 vgg16 模型 我用我的一些图层微调 vgg 模型 拟合我的模型 训练 后 我保存我的模型model save name h5 可以毫无问题地保存 但是 当我尝试使用以下命令重新加载模型时load mod
  • 运行多个 scrapy 蜘蛛的正确方法

    我只是尝试使用在同一进程中运行多个蜘蛛新的 scrapy 文档 http doc scrapy org en 1 0 topics practices html但我得到 AttributeError CrawlerProcess objec
  • 在pyyaml中表示具有相同基类的不同类的实例

    我有一些单元测试集 希望将每个测试运行的结果存储为 YAML 文件以供进一步分析 YAML 格式的转储数据在几个方面满足我的需求 但测试属于不同的套装 结果有不同的父类 这是我所拥有的示例 gt gt gt rz shorthand for
  • Abaqus 将曲面转化为集合

    我一直试图在模型中找到两个表面的中心 参见照片 但未能成功 它们是元素表面 面 查询中没有选项可以查找元素表面的中心 只能查找元素集的中心 找到节点集的中心也很好 但是我的节点集没有出现在工具 gt 查询 gt 质量属性选项中 而且我找不到
  • Pandas Dataframe 中 bool 值的条件前向填充

    问题 如何转发 fill boolTruepandas 数据框中的值 如果是当天的第一个条目 True 到一天结束时 请参阅以下示例和所需的输出 Data import pandas as pd import numpy as np df
  • 表达式中的 Python 'in' 关键字与 for 循环中的比较 [重复]

    这个问题在这里已经有答案了 我明白什么是in运算符在此代码中执行的操作 some list 1 2 3 4 5 print 2 in some list 我也明白i将采用此代码中列表的每个值 for i in 1 2 3 4 5 print
  • Python - 在窗口最小化或隐藏时使用 pywinauto 控制窗口

    我正在尝试做的事情 我正在尝试使用 pywinauto 在 python 中创建一个脚本 以在后台自动安装 notepad 隐藏或最小化 notepad 只是一个示例 因为我将编辑它以与其他软件一起使用 Problem 问题是我想在安装程序
  • Numpy 优化

    我有一个根据条件分配值的函数 我的数据集大小通常在 30 50k 范围内 我不确定这是否是使用 numpy 的正确方法 但是当数字超过 5k 时 它会变得非常慢 有没有更好的方法让它更快 import numpy as np N 5000
  • 如何改变Python中特定打印字母的颜色?

    我正在尝试做一个简短的测验 并且想将错误答案显示为红色 欢迎来到我的测验 您想开始吗 是的 祝你好运 法国的首都是哪里 法国 随机答案不正确的答案 我正在尝试将其显示为红色 我的代码是 print Welcome to my Quiz be
  • 设置 torch.gather(...) 调用的结果

    我有一个形状为 n x m 的 2D pytorch 张量 我想使用索引列表来索引第二个维度 可以使用 torch gather 完成 然后然后还设置新值到索引的结果 Example data torch tensor 0 1 2 3 4
  • Python 分析:“‘select.poll’对象的‘poll’方法”是什么?

    我已经使用 python 分析了我的 python 代码cProfile模块并得到以下结果 ncalls tottime percall cumtime percall filename lineno function 13937860 9
  • Pandas 与 Numpy 数据帧

    看这几行代码 df2 df copy df2 1 df 1 df 1 values 1 df2 ix 0 0 我们的教练说我们需要使用 values属性来访问底层的 numpy 数组 否则我们的代码将无法工作 我知道 pandas Data

随机推荐

  • 移动构造-C++11

    移动构造 移动构造是C 11标准中提供的一种新的构造方法 在现实中有很多这样的例子 我们将钱从一个账号转移到另一个账号 将手机SIM卡转移到另一台手机 将文件从一个位置剪切到另一个位置 移动构造可以减少不必要的复制 带来性能上的提升 有些复
  • 查询每门课程成绩都大于80分学生的姓名

    转载的sql语句 1 查询每门课程成绩都大于80分学生的学号 数据库 表 student name score course A 85 语文 A 75 数学 A 82 英语 B 75 语文 B 89 数学 B 79 英语 天使美眉90 语文
  • Flutter报错之Waiting for another flutter command to release the startup lock解决方案

    问题引入 通过命令行执行 flutter devices 或其他flutter命令时 报错如下 Waiting for another flutter command to release the startup lock 解决方案 关闭A
  • 不用看网课就能学到python的文章(第一天)

    为什么要学python 在大数据时代 抖音快手火爆全球 作业帮小猿搜题的数据库 都离不开大数据 大数据的科学计算 最重要的语言就是python 网络爬虫 网络爬虫 搜狗百科 搜索引擎等等也主要是python 包括一些游戏图像等等都缺少不了p
  • Windows7在Eclipse中配置Python+OpenCV

    1 从http www oracle com technetwork java javase downloads jdk 7u2 download 1377129 html下载jdk 7u2 windows i586 exe 安装到D Pr
  • 简单介绍Roop(类似SimSwap)项目

    文章目录 一 关于Roop 二 安装Roop CPU 2 1 克隆仓库 2 2 设置python国内源 2 2 检查安装virtualenv 2 3 创建项虚拟环境 2 5 安装项目依赖 2 6 下载必要文件 三 运行Roop CPU 四
  • 论文解读《SOLO: Segmenting Objects by Locations》

    实例分割属于比较challenging的任务 他相当于是object detection和semantic segmentation的结合体 在SOLO出现之前 有两种常用的paradigm 1 top down 先进行目标检测 再对检测框
  • mysql中TINYINT的取值范围

    项目场景 最近在开发过程中 看见表设计中是thinyint字段 但对于它的范围产生了好奇 问题描述 当我们填写超过128数值的时候 该字段就会报以下错误 Cause com mysql jdbc MysqlDataTruncation Da
  • 62_Pandas有条件地提取 pandas.DataFrame 的行

    62 Pandas有条件地提取 pandas DataFrame 的行 使用query 方法根据pandas DataFrame的列值的条件提取行 它很方便 因为您可以使用比较运算符和字符串方法以及多个条件的组合来简洁地描述条件规范 目录
  • -bash: /etc/profile: line 11: syntax error near unexpected token `$'{\r''报错问题解决

    在Linux系统配置Java环境变量之后执行 source etc profile指令报 bash etc profile line 11 syntax error near unexpected token r 如下图 错误提示信息已经反
  • dlmalloc解析连载一

    dlmalloc是目前一个十分流行的内存分配器 其由Doug Lea 主页为 http gee cs oswego edu 从1987年开始编写 到目前为止 最新版本为2 8 3 可以从 ftp g oswego edu pub misc
  • 对计算机硬件维护的方法,计算机硬件维护方法

    计算机硬件维护方法 随着科技的不断发展 计算机应用率越来越高 在社会生活的各个领域均有广泛的应用 下面是小编分享的计算机硬件维护方法 一起来看一下吧 计算机常见的硬件故障主要包括内存条损坏 主板元器件损坏 硬盘损坏等 计算机硬件出现故障 一
  • 黑马程序员--分布式搜索ElasticSearch学习笔记

    写在最前 黑马视频地址 https www bilibili com video BV1LQ4y127n4 想获得最佳的阅读体验 请移步至我的个人博客 SpringCloud学习笔记 消息队列MQ学习笔记 Docker学习笔记 分布式搜索E
  • CENTOS环境Apache最新版本httpd-2.4.54编译安装

    一 下载 Apache至少需要apr apr util pcre组件的支持 cd usr local src wget http dlcdn apache org apr apr 1 7 0 tar gz wget http dlcdn a
  • 微信小程序心得体会

    1 微信小程序诞生的前景 1 受到手机内存的限制 用户无法下载诸多app 2 用户为了简洁性不愿意下载app 3 微信用户的日益增加 2 微信小程序的特点 微信小程序的理念是 触手可及 用完即走 是一种不需要下载安装即可使用的应用 一次开发
  • SpringBoot 项目健康检查与监控

    转载 https www cnblogs com javanoob p springboot healthcheck html 前言 You build it You run it 当我们编写的项目上线后 为了能第一时间知晓该项目是否出现问
  • 程序员必知的 七 种软件架构模式!

    一种模式就是特定上下文的问题的一种解决方案 然而 很多开发者至今还对各种软件架构模式之间的差别搞不清 甚至对其所知甚少 大体上 主要有下面这7种架构模式 分层架构 多层架构 管道 过滤器架构 客户端 服务器架构 模型 视图 控制器架构 事件
  • 背包算法(贪婪算法)

    一 问题描述 有n 个物品 它们有各自的重量和价值 现有给定容量的背包 如何让背包里装入的物品具有最大的价值总和 二 总体思路 根据动态规划解题步骤 问题抽象化 建立模型 寻找约束条件 判断是否满足最优性原理 找大问题与小问题的递推关系式
  • PyQt界面:左右界面由于控件太多不协调

    问题 在编写软件时 有左右两个子界面 都设置为网格布局 左界面是菜单 右界面是每个菜单对应的内容 当右界面的空间太多时 导致左界面的空间缩小 不协调 正常显示应如下 如下图 右边的一行控件太多 导致子界面左边界面宽度变窄 影响整体协调性 解
  • python熵权法过程中,权重出现nan值问题

    最近在利用熵权法选取最优指标数据时 计算权重得到的是全为nan值的权重 经过分析过程 找到问题所在 数据展示 熵权法步骤 step 1 标准化处理 step 2 计算每个维度的信息熵 step 3 差异系数 step 4 计算权重 step