探索数据之美:优雅权重计算方法与Python实践

写在开头

在数据的世界里,我们常常需要通过各种方法为不同的数据点分配合理的权重。这是数据分析中至关重要的一环,它决定了模型的准确性和结果的可信度。本文将引导您探索数据分析中常用的权重计算方法,并通过清晰的Python代码实现,让您轻松驾驭权重的奥秘。

1.常见分类

方法

2.区别

权重信息评价:
权重

2.1第一类为AHP层次法和优序图法;

此类方法利用数字的相对大小信息进行权重计算;此类方法为主观赋值法,通常需要由专家打分或通过问卷调研的方式,得到各指标重要性的打分情况,得分越高,指标权重越大。

此类方法适合于多种领域。比如想构建一个员工绩效评价体系,指标包括工作态度、学习能力、工作能力、团队协作。通过专家打分计算权重,得到每个指标的权重,并代入员工数据,即可得到每个员工的综合得分情况。

2.2 第二类为熵值法(熵权法)

此类方法利用数据熵值信息即信息量大小进行权重计算。此类方法适用于数据之间有波动,同时会将数据波动作为一种信息的方法。

比如收集各地区的某年份的经济指标数据,包括产品销售率(X1)、资金利润率(X2)、成本费用利润率(X3)、劳动生产率(X4)、流动资金周转次数(X5),用熵值法计算出各指标权重,再对各地区经济效益进行比较。

2.3 第三类为CRITIC、独立性权重和信息量权重;

此类方法主要是利用数据的波动性或者数据之间的相关关系情况进行权重计算。

比如研究利用某省医院2011年共计5个科室的数据指标(共计6个指标数据)进行CRITIC权重计算,最终可得到出院人数、入出院诊断符合率、治疗有效率、平均床位使用率、病床周转次数、出院者平均住院日这6个指标的权重。如果希望针对各个科室进行计算综合得分,那么可以直接将权重与自身的数据进行相乘累加即可,分值越高代表该科室评价越高。

2.4 第四类为因子分析和主成分法;

此类方法利用了数据的信息浓缩原理,利用方差解释率进行权重计算。

比如对30个地区的经济发展情况的8项指标作主成分分析,主成分分析法可以将8个指标浓缩为几个综合指标(主成分),用这些指标(主成分)反映原来指标的信息,同时利用方差解释率得出各个主成分的权重。

3. 使用时注意事项

注意

4.详细描述及python中实现方法

以python3.10环境为例。

4.1 AHP层次法

4.1.1 计算过程

AHP(层次分析法,Analytic Hierarchy Process)是一种用于解决复杂决策问题、确定多层次结构中各因素的相对权重的方法。该方法通过构建判断矩阵、计算权重向量,层次分解和一致性检验等步骤,最终得到各因素的权重。

AHP计算权重的基本过程:

1). 构建层次结构:

  • 将问题分解为若干层次,包括目标层、准则层和子准则层。每个层次上的因素称为因子。

2). 构建判断矩阵:

  • 对于每个层次中的两两因子,专家根据其相对重要性给出判断矩阵。判断矩阵通常用 A A A 表示,其元素 a i j a_{ij} aij 表示因子 i i i 相对于因子 j j j 的相对重要性。

3). 计算权重向量:

  • 对于每个判断矩阵,计算其最大特征值 λ max ⁡ \lambda_{\max} λmax 和对应的特征向量 v \mathbf{v} v
  • 归一化特征向量,得到权重向量 w \mathbf{w} w。权重向量的每个元素表示对应因子的权重。
  • 对于判断矩阵 A A A,其权重向量为 w \mathbf{w} w,满足 A ⋅ w = λ max ⁡ ⋅ w A \cdot \mathbf{w} = \lambda_{\max} \cdot \mathbf{w} Aw=λmaxw

4). 层次分解:

  • 将权重向量按照层次结构逐级进行分解,得到最终的全局权重。

5). 一致性检验:

  • 对于每个判断矩阵,计算一致性指标 C I CI CI。如果 C I CI CI 大于某个阈值(通常为0.1),则需要进行一致性调整。一致性指标 C I CI CI 的计算公式为: C I = λ max ⁡ − n n − 1 CI = \frac{\lambda_{\max} - n}{n - 1} CI=n1λmaxn,其中 n n n 是判断矩阵的阶数。
  • 一致性比 C R CR CR 可用于进一步检验一致性,计算公式为 C R = C I R I CR = \frac{CI}{RI} CR=RICI,其中 R I RI RI 是随机一致性指标,根据矩阵的阶数查表获得。

以上是AHP权重计算的基本过程和数学公式。在实际应用中,通常使用计算工具来进行繁琐的计算。

4.1.2 Python代码实现

import numpy as npdef ahp_weight(matrix):eigvals, eigvecs = np.linalg.eig(matrix)weights = eigvecs[:, np.argmax(eigvals)]normalized_weights = weights / sum(weights)return normalized_weights

4.1.3 应用场景

假设我们在选择投资标的时,需要考虑收益、风险和流动性三个因素。我们可以通过AHP方法计算权重。

# 构建判断矩阵
matrix = np.array([[1, 2, 3],[1/2, 1, 2],[1/3, 1/2, 1]])# 计算权重
weights = ahp_weight(matrix)
print("权重分配结果:", weights)

4.2. 优序图法(Ranking Method)

4.2.1 计算过程

优序图法(Analytic Hierarchy Process,AHP)是一种用于计算多指标系统中各指标权重的方法。该方法基于对比矩阵,通过构建判断矩阵,计算一致性指标,进行层次分解和一致性检验等步骤,最终得到各指标的权重。

优序图法计算权重的基本过程:

1). 构建层次结构:

  • 将多指标系统分解为若干层次,形成层次结构。通常包括目标层、准则层和方案层。

2). 构建判断矩阵:

  • 对每个层次中的两两元素进行比较,形成判断矩阵。对于准则层和方案层,可以采用专家判断、实验数据或其他方法进行比较。
  • 判断矩阵通常用 A A A 表示,其元素 a i j a_{ij} aij 表示元素 i i i 相对于元素 j j j 的重要性。

3). 一致性检验:

  • 计算一致性指标 C I CI CI。如果 C I CI CI 大于某个阈值(通常为0.1),则需要进行一致性调整。
  • 一致性指标的计算公式为: C I = λ max ⁡ − n n − 1 CI = \frac{\lambda_{\max} - n}{n - 1} CI=n1λmaxn
    其中, λ max ⁡ \lambda_{\max} λmax 是判断矩阵的最大特征值, n n n 是判断矩阵的阶数。

4). 一致性调整:

  • 通过随机一致性指标 R I RI RI 和一致性比 C R CR CR 对判断矩阵进行一致性调整。
  • 一致性比的计算公式为: C R = C I R I CR = \frac{CI}{RI} CR=RICI
    如果 C R CR CR 大于某个阈值(通常为0.1),则需要重新进行专家判断或者修改判断矩阵。

5). 计算权重:

  • 根据一致性通过的判断矩阵,计算权重向量 W W W
  • 权重向量的计算通常涉及最大特征值法或特征向量法。

通过这个计算过程,优序图法能够为每个层次中的元素分配一个权重,该权重反映了各元素在整体层次结构中的相对重要性。

4.2.2 Python代码实现

import networkx as nxdef ranking_weight(graph):ranks = nx.pagerank(graph)weights = [ranks[node] for node in graph.nodes]normalized_weights = weights / sum(weights)return normalized_weights

4.2.3 应用场景

考虑在选择供应商时,我们需要综合考虑价格、质量和交货时间三个因素。我们可以通过优序图法计算权重。

# 构建优序图
G = nx.DiGraph()
G.add_weighted_edges_from([("价格", "质量", 0.6), ("价格", "交货时间", 0.8), ("质量", "交货时间", 0.7)])# 计算权重
weights = ranking_weight(G)
print("权重分配结果:", weights)

4.3. 熵值法(Entropy Method)

4.3.1 计算过程

熵值法是一种用于计算多指标系统中各指标权重的方法,该方法基于信息熵的概念。它通过分析各指标的信息熵来确定它们的权重,从而反映了指标的不确定性和贡献度。

熵值法计算权重的基本过程:

1). 构建指标矩阵:

  • 将多指标系统的数据构建成一个矩阵 X X X,其中每一行对应一个样本,每一列对应一个指标。

2). 归一化处理:

  • 对指标矩阵 X X X 进行归一化处理,将各指标的取值范围映射到[0, 1] 区间。这可以通过线性变换等方法进行。

3). 计算熵值:

  • 对每个指标进行熵值的计算。熵值 E i E_i Ei 的计算公式为: E i = − 1 ln ⁡ ( n ) ∑ j = 1 n p i j ln ⁡ ( p i j ) E_i = -\frac{1}{\ln(n)} \sum_{j=1}^{n} p_{ij} \ln(p_{ij}) Ei=ln(n)1j=1npijln(pij)
    其中, p i j p_{ij} pij 是指标 X i X_i Xi 在第 j j j 个样本上的相对权重, n n n 是样本数。

4). 计算权重:

  • 计算每个指标的权重 W i W_i Wi。权重的计算公式为: W i = 1 − E i ∑

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

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

相关文章

XUbuntu22.04之安装OBS30.0强大录屏工具(一百九十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

​LeetCode解法汇总1038. 从二叉搜索树到更大和树

目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 描述: 给定一个二…

【算法】Boyer-Moore 算法

目录 1.概述1.1.Boyer-Moore 算法介绍1.2.坏字符规则表1.3.好后缀规则表1.4.总结 2.代码实现3.应用 更多数据结构与算法的相关知识可以查看数据结构与算法这一专栏。 有关字符串模式匹配的其它算法: 【算法】Brute-Force 算法 【算法】KMP 算法 【算法】Rabin-Karp …

数据在内存中的存储(含面试题)

数据在内存中的存储 1. 整数在内存中的存储2. 大小端字节序和字节序判断2.1 什么是大小端?2.2 为什么有大小端?2.3 练习2.3.1 练习12.3.2 练习22.3.3 练习3第一题第二题 2.3.4 练习42.3.5 练习5第一题第二题 2.3.6 练习6 1. 整数在内存中的存储 在讲解操作符的时候…

android studio 打开flutter项目 出现 dart sdk is not configured

android studio 版本 flutter版本 解决方式 1 点击Open Dart setting 2 打勾Enable Dart support for the project 3 Dart SDK path 选择flutter/bin/cache/dart-sdk 4 打勾Enable Dart support for the following modules

Python标准库:math模块【侯小啾Python基础领航计划 系列(十六)】

Python标准库:math模块【侯小啾python基础领航计划 系列(十六)】 大家好,我是博主侯小啾, 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ…

目标检测——R-CNN系列检测算法总结

R-CNN系列算法详细解读文章: R-CNN算法解读SPPNet算法解读Fast R-CNN算法解读Faster R-CNN算法解读Mask R-CNN算法解读 目录 1、概述1.1 获取目标候选框1.2 候选框提取特征1.3 候选框分类及边框回归 2、R-CNN系列算法概述2.1 R-CNN算法2.2 SPPNet算法2.3 Fast R-CN…

2024最新版软件测试八股文(文档)

前言 (第一个就刷掉一大批人) 有很多“会自动化”的同学来咨询技术问题,他总会问到我一些元素定位的问题。元素定位其实都不算自动化面试的问题。 一般我都会问:你是定位不到吗?通常结果都是说确实定位不到。 做自…

HarmonyOS开发上手

首先献出开发官网地址 (https://developer.harmonyos.com/cn/develop/) 本文内容 基础入门内容介绍安装DevEco StudioDevEco Studio常用功能介绍项目工程结构详解 1. 基础入门内容介绍 应用开发流程 在正式开始之前还需要了解一些有关的基础概念 方舟…

H5流媒体播放器EasyPlayer播放H.265新增倍速播放功能,具体如何实现?

目前我们TSINGSEE青犀视频所有的视频监控平台,集成的都是EasyPlayer.js版播放器,它属于一款高效、精炼、稳定且免费的流媒体播放器,可支持多种流媒体协议播放,包括WebSocket-FLV、HTTP-FLV,HLS(m3u8&#x…

vivado分析-在 Versal 器件中执行 NoC 服务质量分析

AMD Vivado ™ 中的服务质量 (QoS) 用于将片上网络 (NoC) 编译器生成的当前 NoC 解决方案估算所得 QoS 与 AXI NoCIP 和 / 或 AXI4 ‑ Stream NoC IP 中指定的 QoS 要求进行对比。一旦 NoC 解决方案过时 , 就需要调用 NoC 编译器并生成新的 NoC 解决方案以…

论文投稿查询会议期刊及deadlines的网站

1. 这个是查近期CCF-ABC的ddl会议的网址 https://ccfddl.github.io/ https://ccfddl.top/ 2. 期刊选刊 https://ijournal.topeditsci.com/home https://journalsuggester.springer.com/ 3. IEEE出版物推荐 https://publication-recommender.ieee.org/home

Linux scatterlist 详解

源码基于:Linux 5.4 约定: 芯片架构:ARM64内存架构:UMACONFIG_ARM64_VA_BITS:39CONFIG_ARM64_PAGE_SHIFT:12CONFIG_PGTABLE_LEVELS :3 0. 前言 之前在《Linux DMA... 零拷贝》博文分享了DMA 技…

网络安全卫士:上海迅软DSE的员工上网管理策略大揭秘!

在日常办公中,企业员工可能会在互联网上有意或无意的将一些包含内部重要信息的内容发布出去,从而造成不必要的违规及泄密风险,因此对终端用户进行规范的上网行为管理,既能有效预防重要数据泄密,同时也能提高员工办公效…

连续性变量的组间差异分析

目录 正态分布 正态分布检测 1:图像法 2:计算法 Shapiro–Wilk W检验(小样本推荐) Lilliefors正态性检验 Anderson–Darling 或AD检验 DAgostino检验(大样本推荐) 独立样本t检验 1,方差齐性检验 …

JavaEE进阶学习:SpringBoot 的创建和使用

1.什么是Spring Boot Spring 的诞生是为了简化 Java 程序的开发的,而 Spring Boot 的诞生是为了简化 Spring 程序开发的。 Spring Boot 翻译一下就是 Spring 脚手架,它就是为了快速开发 Spring 框架而诞生的 2.Spring Boot 优点 起步依赖 (创建的时候…

如何用JS实现模糊查询功能

我是写的是JSON数据通过请求来获取,实现这个模糊查询功能我只用了indexOf返回数组下标这一种办法。方法不限,下面我只展示这一种方法喽! indexOf是什么 indexOf是返回指定内容在原字符串中的位置,该方法是从数组的start处或数组的…

按升序输出各个字符串。

编写程序,设计并实现如下功能:从键盘输入多个字符串,按升序输出各个字符串。

从零开始搭建博客网站-----框架页

实现效果如下 发布的功能还没有实现&#xff0c;仅仅实现了简单的页面显示 关键代码如下 <template><div class"layout"><el-header class"header"><div class"logo">EasyBlog</div></el-header><el-c…

Python标准库:copy模块【侯小啾python基础领航计划 系列(十五)】

Python标准库:copy模块【侯小啾python基础领航计划 系列(十五)】 大家好,我是博主侯小啾, 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ…