熵值法(熵权法)

熵值法(Entropy Method)是一种多属性决策分析方法,主要用于权重确定、排序和评价。它在风险评估、资源配置、环境管理等领域得到广泛应用。熵值法的核心思想是基于信息熵的概念,利用信息熵来度量各属性对决策的贡献程度,从而确定各属性的权重。

下面是熵值法的基本步骤:

  1. 构建决策矩阵: 将决策问题转化为一个属性-样本矩阵,其中每一列表示一个属性,每一行表示一个样本。
  2. 归一化处理: 对决策矩阵进行归一化处理,使得每个属性的值都在 [0, 1] 范围内。这可以通过将每个属性值除以该属性的最大值来实现。
  3. 计算熵值: 对每个属性计算其信息熵,熵的计算公式为:
    在这里插入图片描述
import numpy as np
import pandas as pd##读取数据
data=pd.read_csv('data.csv',encoding='gb18030',index_col=0)
indicator=data.columns.tolist()   ##指标个数
project=data.index.tolist()    ##方案数、评价主体
value=data.values
print(indicator)
print(project)
print(value)
data.head()

在这里插入图片描述

###定义数据标准化函数。为了避免求熵值时对数无意义,对数据进行平移,对标准化后的数据统一加了常数0.001
def std_data(value,flag):for i in range(len(indicator)):#print(flag[i])if flag[i]=='+':value[:,i]=(value[:,i]-np.min(value[:,i],axis=0))/(np.max(value[:,i],axis=0)-np.min(value[:,i],axis=0))+0.001elif flag[i]=='-':value[:,i]=(np.max(value[:,i],axis=0)-value[:,i])/(np.max(value[:,i],axis=0)-np.min(value[:,i],axis=0))+0.001return value
#定义熵值法函数、熵值法计算变量的权重
def cal_weight(indicator,project,value):p= np.array([[0.0 for i in range(len(indicator))] for i in range(len(project))])                    ##print(p)for i in range(len(indicator)):p[:,i]=value[:,i]/np.sum(value[:,i],axis=0)e=-1/np.log(len(project))*sum(p*np.log(p))      #计算熵值g=1-e     # 计算一致性程度w=g/sum(g)     #计算权重return w
##数据标准化
flag=["-","+","-","+","+","+"]  ##表示指标为正向指标还是反向指标
std_value=std_data(value,flag)
std_value.round(3)

在这里插入图片描述

##结果
w=cal_weight(indicator,project,std_value)
w=pd.DataFrame(w,index=data.columns,columns=['权重'])
print("#######权重:#######")
print(w)
score=np.dot(std_value,w).round(2)
#print(score)
score=pd.DataFrame(score,index=data.index,columns=['综合得分']).sort_values(by =['综合得分'],ascending = False)
score

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/18173.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入解析WordPress常用的函数、方法

WordPress 是一个广泛使用的内容管理系统(CMS),其灵活性和扩展性使其成为创建和管理网站的首选。为了充分利用 WordPress 的功能,了解其常用的函数和方法是必不可少的。本文将深入解析一些最常用和最有用的 WordPress 函数和方法&…

FME学习之旅---day28

我们付出一些成本,时间的或者其他,最终总能收获一些什么。 教程:CSV 入门 逗号分隔值 (CSV) 是一种以 ASCII 文件格式存储结构化信息的方法,从而使其成为一个非常简单的数据库。这使其成为电子表格、数据…

【busybox记录】【shell指令】link

目录 内容来源: 【GUN】【link】指令介绍 【busybox】【link】指令介绍 【linux】【link】指令介绍 使用示例: Link 只能用来创建硬链接,更多的指令请查看ln 常用组合指令: 指令不常用/组合用法还需继续挖掘: …

【Qt秘籍】[004]-Qt中的重要工具-介绍

QtCreator概览 当我们打开系统的菜单翻到刚刚下载的Qt文件,里面的内容却让我们眼花缭乱。 不过别急,下面我们将一一解析。 1.Assistant Qt自带的离线版本官方文档 2.Designer Qt图形化设计界面的工具,通过拖拽控件快速生成界面&#xff0c…

Linux 基础笔记(一)

1.ctrl A : 到开头位置; 2.CtrlE : 到结尾位置; 3.ctrlU: 删除光标前内容; 4.ctrlK:删除光标后内容; 5.ctrlL: 清屏; 6.ctrlC:结束当前命令操作; 7.ctrlD:退出当…

2024 最新版 Navicat 17 下载与安装步骤及演示 (图文版)

Navicat 是一款专业的数据库管理工具,支持多种数据库类型,包括 MySQL、Oracle、SQL Server、PostgreSQL、MariaDB、Redis、MongoDB 和 SQLite。Navicat17包含的版本如下Navicat Premium 17, Navicat 17 for MySQL, Navicat 17 for Oracle, Navicat 17 fo…

MySQL之创建高性能的索引(五)

创建高性能的索引 多列索引 很多人对多列索引的理解都不够。一个常见的错误就是,为每个列创建独立的索引,或者按照错误的顺序创建多列索引。先来看第一个问题,为每个列创建独立的索引,从SHOW CREATE TABLE总很容易看到这种情况:…

WLAN简介

一、WLAN 定义概念 WLAN 即无线局域网(Wireless Local Area Network),利用无线通信技术在局部范围内建立的网络。 无需布线,通过无线信号实现设备之间的通信和数据传输。通常由无线接入点(Access Point,A…

lda模型:官方处理方式和自己处理数据对比

自己处理数据,然后分批训练,第一步先对比自己处理的方式和官方是否一致。 官方的代码 import gensim from gensim import corpora from gensim.models import LdaModel# 示例数据 documents ["Human machine interface for lab abc computer appl…

YOLO算法输出图像含义以及理解

背景 近日使用YOLO算法进行目标检测任务的时候,对于输出的几张图片产生了疑惑,故在此复习与巩固。 图片说明 confusion_matrix(混淆矩阵): 混淆矩阵是一种用来衡量分类模型性能的表格。横坐标为实际真值&#xff0c…

如何使用navigator对象,手写一个正则表达式验证邮箱

1:如何使用 navigator 对象 navigator 对象是 JavaScript 中的一个内置对象,用于获取浏览器和操作系统的信息。以下是一些常用的 navigator 属性和方法: navigator.userAgent: 返回用户代理字符串,可以用于检测浏览器类型和版本。 navigator.platform: 返回操作系统平台。 n…

CANDela studio使用小tips

打开软件的时候注意先选择英文,因为双击CDD/CDDT文件默认打开的是德文,所以最正确的打开方式是先打开CANDela studio,再导入CDD,不仅可以避免用德文打开,还能避免vector软件的bug。 不同的版本有不同的权限。 admin有…

TOPSIS综合评价

TOPSIS法(Technique for Order Preference by Similarity to an Ideal Solution)是一种常用的综合评价方法,该方法根据有限个评价对象与理想化目标的接近程度进行排序,是在现有的对象中进行相对优劣的评价。 TOPSIS法的原理是通过…

Java-文件操作

一、创建文件 1.创建文件夹 创建文件夹时,注意两个条件,该路径对应的是否为目录(dir),该文件夹是否存在。 File Apathnew File("./文件夹A"); //当前路径文件夹的存储路径if(!Apath.exists() &&am…

AI推介-多模态视觉语言模型VLMs论文速览(arXiv方向):2024.05.01-2024.05.10

文章目录~ 1.Pseudo-Prompt Generating in Pre-trained Vision-Language Models for Multi-Label Medical Image Classification2.VLSM-Adapter: Finetuning Vision-Language Segmentation Efficiently with Lightweight Blocks3.Memory-Space Visual Prompting for Efficient …

WeightedRandomSamplerDDP, 加权的DDP采样器

先来看一下WeighedRandomSampler: [docs]class WeightedRandomSampler(Sampler[int]):r"""Samples elements from [0,..,len(weights)-1] with given probabilities (weights).Args:weights (sequence) : a sequence of weights, not necessary s…

JAVA基础----线程池

①什么是线程池? 线程池是对所有线程进行统一的管理和控制,从而提高系统的运行效率。当我们要使用线程的时候可以直接从线程池中拿,用完也不用自己去销毁,省去创建和销毁的时间,提升系统的响应时间。 ②线程池的七大核…

单链表的相关题目

1.删除链表中给定值val的所有结点 public void removeall(int key) {//由于是删除链表中所有和key值相同的结点,所以可以设置两个ListNode类型的数据,一个在前面,一个在后面.//直到前面的走到链表的最后,这样完成了遍历.//先判断一下这个链表是否为空if(headnull){System.out.…

【ArcGIS For JS】前端geojson渲染行政区划图层并加标签

原理 通过DataV工具 生成行政区的geojson(得到各区的面元素数据), 随后使用手动绘制featureLayer与Label,并加载到地图。 //vue3加载geojson数据public/geojson/pt.json,在MapView渲染上加载geojson数据 type是"MultiPolygon"fetc…

Vue 3中的v-for指令使用详解

Vue 3中的v-for指令使用详解 一、前言1. 基本语法2. 循环渲染对象3. 在组件中使用v-for4.普通案例5. 其他用法 二、结语 一、前言 在Vue 3中,v-for指令是一个非常强大且常用的指令,它用于在模板中循环渲染数组或对象的内容。本文将为您详细介绍Vue 3中v…