资讯专栏INFORMATION COLUMN

Python | Numpy:详解计算矩阵的均值和标准差

LeanCloud / 2357人阅读

摘要:一前言权重法是一种比熵权法和标准离差法更好的客观赋权法它是基于评价指标的对比强度和指标之间的冲突性来综合衡量指标的客观权重。对比强度是指同一个指标各个评价方案之间取值差距的大小,以标准差的形式来表现。

一、前言

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 npimport pandas as pd

提取数据:

df = pd.read_excel("./datas/result03.xlsx")dfdatas = df.iloc[:, 1:]datas

如下所示:

数据正向和逆向化处理:

X = datas.valuesxmin = X.min(axis=0)xmax = X.max(axis=0)xmaxmin = xmax - xminn, m = X.shapeprint(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 即可!

如上图所示,这下与文档里的结果一致了!

推荐阅读:
CRITIC权重法

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/124107.html

相关文章

  • NumPyPython内置列表计算标准区别详析

      小编写这篇文章的主要目的,主要是给大家进行介绍,关于NumPy与Python内置列表计算标准差区别的相关介绍,希望可以给各位读者带来帮助。  1什么是Numpy  NumPy,是NumericalPython的通称,用以性能卓越计算机的应用和数据统计分析的前提包,像数理科学专用工具(pandas)和架构(Scikit-learn)中都采用上了NumPy这个包。  NumPy中的基本数据结构是n...

    89542767 评论0 收藏0
  • 达观数据陈运文:一文详解高斯混合模型原理

    摘要:高斯混合模型则不会受到这个约束,因为它对每个类簇分别考察特征的协方差模型。算法可以被视为高斯混合模型的一种特殊形式。达观数据陈运文在方法中使用来训练高斯混合模型时对初始值的设置非常敏感。可以运行来生成类中心,并以此作为高斯混合模型的初 showImg(https://segmentfault.com/img/bVYIlU?w=3000&h=1669); 什么是高斯混合模型(Gaussi...

    mudiyouyou 评论0 收藏0
  • Programming Computer Vision with Python (学习笔记五)

    摘要:下面是二维空间的高斯分布函数公式这个公式被称作高斯核。高斯模糊使用高斯平均算子来实现的图像模糊叫高斯模糊,也叫高斯平滑被认为是一种最优的图像平滑处理。 SciPy库 SciPy库,与之前我们使用的NumPy和Matplotlib,都是scipy.org提供的用于科学计算方面的核心库。相对NumPy,SciPy库提供了面向更高层应用的算法和函数(其实也是基于NumPy实现的),并以子模块...

    Rocko 评论0 收藏0
  • NumPyPython:内置列表计算标准区别解析

      小编写这篇文章的目的,主要是给大家来做一个比较详细的解答,解答一下其具体的相关知识,还有一些相关的代码解析,下面就给大家进行一个比较详细的解答。  什么是Numpy  NumPy,是Numerical Python的简称,用于性能比较高的基础分析数据包,可以对其进行用来进行数据分析,像数学科学工具(pandas)和框架(Scikit-learn)中都使用到了NumPy这个包。  NumPy中的...

    89542767 评论0 收藏0
  • Programming Computer Vision with Python (学习笔记四)

    摘要:上一个笔记主要是讲了的原理,并给出了二维图像降一维的示例代码。当我使用这种方法实现时,程序运行出现错误,发现是对负数开平方根产生了错误,也就是说对协方差矩阵求得的特征值中包含了负数。而能夠用于任意乘矩阵的分解,故适用范围更广。 上一个笔记主要是讲了PCA的原理,并给出了二维图像降一维的示例代码。但还遗留了以下几个问题: 在计算协方差和特征向量的方法上,书上使用的是一种被作者称为com...

    Allen 评论0 收藏0

发表评论

0条评论

LeanCloud

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<