Python Numpy实现计算矩阵的均值和标准差详解
作者:叶庭云 发布时间:2021-12-20 09:51:20
一、前言
CRITIC权重法是一种比熵权法和标准离差法更好的客观赋权法:
它是基于评价指标的对比强度和指标之间的冲突性来综合衡量指标的客观权重。考虑指标变异性大小的同时兼顾指标之间的相关性,并非数字越大就说明越重要,完全利用数据自身的客观属性进行科学评价。
对比强度是指同一个指标各个评价方案之间取值差距的大小,以标准差的形式来表现。标准差越大,说明波动越大,即各方案之间的取值差距越大,权重会越高;
指标之间的冲突性,用相关系数进行表示,若两个指标之间具有较强的正相关,说明其冲突性越小,权重会越低。
对于 CRITIC 权重法而言,在标准差一定时,指标间冲突性越小,权重也越小;冲突性越大,权重也越大;另外,当两个指标间的正相关程度越大时,(相关系数越接近1),冲突性越小,这表明这两个指标在评价方案的优劣上反映的信息有较大的相似性。
在用 Python 复现 CRITIC 权重法时,需要计算变异系数,以标准差的形式来表现,如下所示:
Sj表示第 j 个指标的标准差,在 CRITIC 权重法中使用标准差来表示各指标的内取值的差异波动情况,标准差越大表示该指标的数值差异越大,越能放映出更多的信息,该指标本身的评价强度也就越强,应该给该指标分配更多的权重。
研究收集到湖南省某医院 2011 年 5 个科室的数据,共有 6 个指标,当前希望通过已有数据分析各个指标的权重情况如何,便于医院对各个指标设立权重进行后续的综合评价,用于各个科室的综合比较等。数据如下:
二、详解计算均值和标准差
初始化一个简单的矩阵:
a = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
a
分别计算整体的均值、每一列的均值和每一行的均值:
print("整体的均值:", np.mean(a)) # 整体的均值
print("每一列的均值:", np.mean(a, axis=0)) # 每一列的均值
print("每一行的均值:", np.mean(a, axis=1)) # 每一行的均值
分别计算整体的标准差、每一列的标准差和每一行的标准差:
print("整体的方差:", np.std(a)) # 整体的标准差
print("每一列的方差:", np.std(a, axis=0)) # 每一列的标准差
print("每一列的方差:", np.std(a, axis=1)) # 每一行的标准差
结果如下:
三、实践:CRITIC权重法计算变异系数
导入需要的依赖库:
import numpy as np
import pandas as pd
提取数据:
df = pd.read_excel("./datas/result03.xlsx")
df
datas = df.iloc[:, 1:]
datas
如下所示:
数据正向和逆向化处理:
X = datas.values
xmin = X.min(axis=0)
xmax = X.max(axis=0)
xmaxmin = xmax - xmin
n, m = X.shape
print(m, n)
for i in range(n):
for j in range(m):
if j == 5:
X[i, j] = (xmax[j] - X[i, j]) / xmaxmin[j] # 越小越好
else:
X[i, j] = (X[i, j] - xmin[j]) / xmaxmin[j] # 越大越好
X = np.round(X, 5)
print(X)
如下所示:
按列计算每个指标数据的标准差:
发现结果与文档不一致:
原因:numpy默认是除以样本数,求的是母体标准差;而除以样本-1,得到的才是样本标准差,这时设置参数 ddof=1 即可!
如上图所示,这下与文档里的结果一致了!
来源:https://blog.csdn.net/fyfugoyfa/article/details/121353033
猜你喜欢
- 可能许多同学对SQL Server的备份和还原有一些了解,也可能经常使用备份和还原功能,我相信除DBA之外我们大部分开发员队伍对备份和还原只
- 目录一. 加载数据1. 继承Dataset类并重写关键方法2. 使用Dataloader加载数据二. 模型设计三. 训练四. 测试结语pyt
- 表单验证做网站程序多多少少都会碰到,其中emai地址的合法性验证也算是一个典型的例子,网页表单的验证我们一般是先在客户端使用javascri
- 导言:到目前为止,我们的教程围绕的是text数据。然而,很多应用程序既需要处理text数据,也需要处理二进制数据。比如招聘网站可能需要用户上
- 有一个群友在群里问个如何快速搭建一个搜索引擎,在搜索之后我看到了这个代码所在Git:https://github.com/asciimoo/
- PHP mysqli_rollback() 函数关闭自动提交,做一些查询,提交查询,然后回滚当前事务:<?php// 假定数据库用户名
- 数据规整化:合并、清理、过滤pandas和python标准库提供了一整套高级、灵活的、高效的核心函数和算法将数据规整化为你想要的形式!本篇博
- 引言https://github.com/go-chassis/go-chassis是一个微服务开发框架,而微服务开发框架带来的其中一个课题
- 数据库服务器主要用于存储、查询、检索企业内部的信息,因此需要搭配专用的数据库系统,对服务器的兼容性、可靠性和稳定性等方面都有很高的要求。下面
- 先来看看js中的Null类型表示什么?null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象,一般一个未定义的变量在初次使用
- 1. 需求vs现状1.1 需求要求做一个ERP后台辅助管理的程序,有以下几项基本要求:1. 基本的增删改查功能2. 基于对象的权限控制(如:
- 在用pyinstaller打包后不想要后面的终端命令框,但是打包时加了-w或者--noconsole命令后会导致cmd程序不能运行从而出错。
- 选择自 xinyuxin912 的 Blog将一个图片以二进制值的形式存入Xml文件中try { &nbs
- 对于Dreamweaver这个广大用户早有听闻的网页编辑工具,除功能强大外,Dreamweaver一向被推崇为同类网页编辑软件中产生垃圾代码
- HTTP格式HTTP GET请求的格式:GET /path HTTP/1.1Header1: Value1Header2: Value2He
- 或许你也经历过,很多人都说一个女人很漂亮,而你觉得很一般。有时候,我也尝试理解为什么会对某个女人情有独钟。通常,我用迷人来描述,但这个&qu
- 本文实例讲述了python判断远程端口是否打开的方法。分享给大家供大家参考。具体实现方法如下:import socketsk = socke
- 图片提取为了方便技术展示,我们选取素材为演员杨紫的一段演讲视频,用例仅为技术交流演示使用,不针对任何指定人。为达到我们AI换脸的目的,我们首
- 想必Java 的开发者没有不知道或者没用过 jps 这个命令的,这个命令是用来在主机上查看有哪些 Java 程序在运行的。我刚用 Go 语言
- 内容摘要:图片切换效果在网页制作中经常被使用,好的切换效果不仅增加了网站的实用行也提升了网站的趣味性。而图片切换方法有的使用flash来实现