Python Numpy实现计算矩阵的均值和标准差详解

目录
  • 一、前言
  • 二、详解计算均值和标准差
  • 三、实践:CRITIC权重法计算变异系数

一、前言

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 即可!

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

以上就是Python Numpy实现计算矩阵的均值和标准差详解的详细内容,更多关于Python计算矩阵均值标准差的资料请关注我们其它相关文章!

(0)

相关推荐

  • Python常用库Numpy进行矩阵运算详解

    Numpy支持大量的维度数组和矩阵运算,对数组运算提供了大量的数学函数库! Numpy比Python列表更具优势,其中一个优势便是速度.在对大型数组执行操作时,Numpy的速度比Python列表的速度快了好几百.因为Numpy数组本身能节省内存,并且Numpy在执行算术.统计和线性代数运算时采用了优化算法. Numpy的另一个强大功能是具有可以表示向量和矩阵的多维数组数据结构.Numpy对矩阵运算进行了优化,使我们能够高效地执行线性代数运算,使其非常适合解决机器学习问题. 与Python列表相比

  • Python中的Numpy 矩阵运算

    目录 在学习线性代数时我们所接触的矩阵之间的乘法是矩阵的叉乘,有这样一个前提: 若矩阵A是m*n阶的,B是p*q阶的矩阵,AB能相乘,首先得满足:n=p,即A的列数要等于B的行数.运算的方法如下图: 当时学线性代数时老师教的更为直观记法: 点乘则是这样: 假如有a,b两个矩阵,在Matlab中我们实现点乘和叉乘的方式分别如下: a.*b %表示点乘 a*b %表示叉乘 下面我们来看看python中的操作: import numpy as np a = np.arange(1, 10).resha

  • Python计算矩阵的和积的实例详解

    python的numpy库提供矩阵运算的功能,因此我们在需要矩阵运算的时候,需要导入numpy的包. 一.numpy的导入和使用 from numpy import *;#导入numpy的库函数 import numpy as np; #这个方式使用numpy的函数时,需要以np.开头. 二.矩阵的创建 由一维或二维数据创建矩阵 from numpy import *; a1=array([1,2,3]); a1=mat(a1); 创建常见的矩阵 data1=mat(zeros((3,3)));

  • Python Numpy实现计算矩阵的均值和标准差详解

    目录 一.前言 二.详解计算均值和标准差 三.实践:CRITIC权重法计算变异系数 一.前言 CRITIC权重法是一种比熵权法和标准离差法更好的客观赋权法: 它是基于评价指标的对比强度和指标之间的冲突性来综合衡量指标的客观权重.考虑指标变异性大小的同时兼顾指标之间的相关性,并非数字越大就说明越重要,完全利用数据自身的客观属性进行科学评价. 对比强度是指同一个指标各个评价方案之间取值差距的大小,以标准差的形式来表现.标准差越大,说明波动越大,即各方案之间的取值差距越大,权重会越高: 指标之间的冲突

  • 使用numpy.mean() 计算矩阵均值方式

    目录 numpy.mean计算矩阵均值 均值函数numpy.mean mean是numpy中常用的求均值函数 numpy.mean计算矩阵均值 计算矩阵的均值 >>> a = np.array([[1, 2], [3, 4]]) >>> np.mean(a) # 将上面二维矩阵的每个元素相加除以元素个数(求平均数) 2.5 >>> np.mean(a, axis=0) # axis=0,计算每一列的均值 array([ 2.,  3.]) >&g

  • Python中shape计算矩阵的方法示例

    本文实例讲述了Python中shape计算矩阵的方法.分享给大家供大家参考,具体如下: 看到机器学习算法时,注意到了shape计算矩阵的方法接下来就讲讲我的理解吧 >>> from numpy import * >>> import operator >>> a =mat([[1,2,3],[5,6,9]]) >>> a matrix([[1, 2, 3], [5, 6, 9]]) >>> shape(a) (2,

  • Python计算图片数据集的均值方差示例详解

    目录 前言 Python批量reshape图片 参考 计算数据集均值和方差 前言 在做图像处理的时候,有时候需要得到整个数据集的均值方差数值,以下代码可以解决你的烦恼: (做这个之前一定保证所有的图片都是统一尺寸,不然算出来不对,我的代码里设计的是512*512,可以自己调整,同一尺寸的代码我也有: Python批量reshape图片 # -*- coding: utf-8 -*- """ Created on Thu Aug 23 16:06:35 2018 @author

  • numpy.std() 计算矩阵标准差的方法

    计算矩阵标准差 >>> a = np.array([[1, 2], [3, 4]]) >>> np.std(a) # 计算全局标准差 1.1180339887498949 >>> np.std(a, axis=0) # axis=0计算每一列的标准差 array([ 1., 1.]) >>> np.std(a, axis=1) # 计算每一行的标准差 array([ 0.5, 0.5]) 官方手册:http://docs.scipy.

  • Python numpy.zero() 初始化矩阵实例

    那就废话不多说,直接上代码吧! new_array = np.zeros((107,4))# 共107行 每行4列 初值为0 >>> new_array = np.zeros((107,4)) >>> new_array array([[0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0.

  • 利用Python代码实现数据可视化的5种方法详解

    前言 数据科学家并不逊色于艺术家.他们用数据可视化的方式绘画,试图展现数据内隐藏的模式或表达对数据的见解.更有趣的是,一旦接触到任何可视化的内容.数据时,人类会有更强烈的知觉.认知和交流. 数据可视化是数据科学家工作中的重要组成部分.在项目的早期阶段,你通常会进行探索性数据分析(Exploratory Data Analysis,EDA)以获取对数据的一些理解.创建可视化方法确实有助于使事情变得更加清晰易懂,特别是对于大型.高维数据集.在项目结束时,以清晰.简洁和引人注目的方式展现最终结果是非常

  • Python数学建模StatsModels统计回归之线性回归示例详解

    目录 1.背景知识 1.1 插值.拟合.回归和预测 1.2 线性回归 2.Statsmodels 进行线性回归 2.1 导入工具包 2.2 导入样本数据 2.3 建模与拟合 2.4 拟合和统计结果的输出 3.一元线性回归 3.1 一元线性回归 Python 程序: 3.2 一元线性回归 程序运行结果: 4.多元线性回归 4.1 多元线性回归 Python 程序: 4.2 多元线性回归 程序运行结果: 5.附录:回归结果详细说明 1.背景知识 1.1 插值.拟合.回归和预测 插值.拟合.回归和预测

  • python数据可视化使用pyfinance分析证券收益示例详解

    目录 pyfinance简介 pyfinance包含六个模块 returns模块应用实例 收益率计算 CAPM模型相关指标 风险指标 基准比较指标 风险调整收益指标 综合业绩评价指标分析实例 结语 pyfinance简介 在查找如何使用Python实现滚动回归时,发现一个很有用的量化金融包--pyfinance.顾名思义,pyfinance是为投资管理和证券收益分析而构建的Python分析包,主要是对面向定量金融的现有包进行补充,如pyfolio和pandas等. pyfinance包含六个模块

  • python sklearn与pandas实现缺失值数据预处理流程详解

    注:代码用 jupyter notebook跑的,分割线线上为代码,分割线下为运行结果 1.导入库生成缺失值 通过pandas生成一个6行4列的矩阵,列名分别为'col1','col2','col3','col4',同时增加两个缺失值数据. import numpy as np import pandas as pd from sklearn.impute import SimpleImputer #生成缺失数据 df=pd.DataFrame(np.random.randn(6,4),colu

随机推荐