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

简介: 对于 CRITIC 权重法而言,在标准差一定时,指标间冲突性越小,权重也越小;冲突性越大,权重也越大;另外,当两个指标间的正相关程度越大时,(相关系数越接近1),冲突性越小,这表明这两个指标在评价方案的优劣上反映的信息有较大的相似性。

一、前言


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权重法计算变异系数


导入需要的依赖库:


importnumpyasnpimportpandasaspd


提取数据:


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)
foriinrange(n):
forjinrange(m):
ifj==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权重法

目录
相关文章
|
5月前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
488 1
|
5月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
298 0
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python实现基于矩阵分解的长期事件(MFLEs)时间序列分析
在现代数据分析中,高维时间序列数据的处理和预测极具挑战性。基于矩阵分解的长期事件(MFLEs)分析技术应运而生,通过降维和时间序列特性结合,有效应对大规模数据。MFLE利用矩阵分解提取潜在特征,降低计算复杂度,过滤噪声,并发现主要模式。相比传统方法如ARIMA和深度学习模型如LSTM,MFLE在多变量处理、计算效率和可解释性上更具优势。通过合理应用MFLE,可在物联网、金融等领域获得良好分析效果。
417 0
使用Python实现基于矩阵分解的长期事件(MFLEs)时间序列分析
|
7月前
|
存储 数据采集 数据处理
Pandas与NumPy:Python数据处理的双剑合璧
Pandas与NumPy是Python数据科学的核心工具。NumPy以高效的多维数组支持数值计算,适用于大规模矩阵运算;Pandas则提供灵活的DataFrame结构,擅长处理表格型数据与缺失值。二者在性能与功能上各具优势,协同构建现代数据分析的技术基石。
581 0
|
机器学习/深度学习 数据采集 数据挖掘
解锁 Python 数据分析新境界:Pandas 与 NumPy 高级技巧深度剖析
Pandas 和 NumPy 是 Python 中不可或缺的数据处理和分析工具。本文通过实际案例深入剖析了 Pandas 的数据清洗、NumPy 的数组运算、结合两者进行数据分析和特征工程,以及 Pandas 的时间序列处理功能。这些高级技巧能够帮助我们更高效、准确地处理和分析数据,为决策提供支持。
385 2
|
数据采集 数据可视化 数据处理
如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`)
本文介绍了如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`),加载历史数据,计算均线和其他技术指标,实现交易逻辑,记录和可视化交易结果。示例代码展示了如何根据均线交叉和价格条件进行开仓、止损和止盈操作。实际应用时需注意数据质量、交易成本和风险管理。
872 5
|
存储 数据处理 Python
Python科学计算:NumPy与SciPy的高效数据处理与分析
【10月更文挑战第27天】在科学计算和数据分析领域,Python凭借简洁的语法和强大的库支持广受欢迎。NumPy和SciPy作为Python科学计算的两大基石,提供了高效的数据处理和分析工具。NumPy的核心功能是N维数组对象(ndarray),支持高效的大型数据集操作;SciPy则在此基础上提供了线性代数、信号处理、优化和统计分析等多种科学计算工具。结合使用NumPy和SciPy,可以显著提升数据处理和分析的效率,使Python成为科学计算和数据分析的首选语言。
380 3
|
存储 机器学习/深度学习 算法
Python科学计算:NumPy与SciPy的高效数据处理与分析
【10月更文挑战第26天】NumPy和SciPy是Python科学计算领域的两大核心库。NumPy提供高效的多维数组对象和丰富的数学函数,而SciPy则在此基础上提供了更多高级的科学计算功能,如数值积分、优化和统计等。两者结合使Python在科学计算中具有极高的效率和广泛的应用。
549 2
|
数据挖掘 索引 Python
Python数据分析篇--NumPy--进阶
Python数据分析篇--NumPy--进阶
202 0
|
6月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
736 102

推荐镜像

更多