如何将大批量数据进行标准差标准化
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将大批量数据进行标准差标准化相关的知识,希望对你有一定的参考价值。
spss提供了很方便的数据标准化方法,这里只介绍Z标准化方法。即每一变量值与其平均值之差除以该变量的标准差。无量纲化后各变量的平均值为0,标准差为1,从而消除量纲和数量级的影响。该方法是目前多变量综合分析中使用最多的一种方法。在原始数据呈正态分布的情况下,利用该方法进行数据无量纲处理是较合理的。spss的实现步骤:图例
【1】分析——描述统计——描述
【2】弹出“描述统计”对话框,首先将准备标准化的变量移入变量组中,此时,最重要的一步就是勾选“将标准化得分另存为变量”,最后点击确定。
【3】返回SPSS的“数据视图”,此时就可以看到新增了标准化后数据的字段。
基于此字段可以做其他分析。 参考技术A 方法一:规范化方法
也叫离差标准化,是对原始数据的线性变换,使结果映射到[0,1]区间。
方法二:正规化方法
这种方法基于原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。将A的原始值x使用z-score标准化到x’。
z-score标准化方法适用于属性A的最大值和最小值未知的情况,或有超出取值范围的离群数据的情况。
spss默认的标准化方法就是z-score标准化。
用Excel进行z-score标准化的方法:在Excel中没有现成的函数,需要自己分步计算,其实标准化的公式很简单。
步骤如下:
1.求出各变量(指标)的算术平均值(数学期望)xi和标准差si ;
2.进行标准化处理:
zij=(xij-xi)/si
其中:zij为标准化后的变量值;xij为实际变量值。
3.将逆指标前的正负号对调。
标准化后的变量值围绕0上下波动,大于0说明高于平均水平,小于0说明低于平均水平。 参考技术B 现在因参加夏令营数学建模,我用主成分分析法,在Mathematica 7.0很轻松地将大量数据标准化,数据进行标准差标准化的公式你应该知道吧,可以在网上查到,自己在Mathematica 7.0编制简单的代码就好了
在数据分析之前,我们通常需要先将数据标准化(normalization),利用标准化后的数据进行数据分析。数据标准化也就是统计数据的指数化。数据标准化处理主要包括数据同趋化处理和无量纲化处理两个方面。数据同趋化处理主要解决不同性质数据问题,对不同性质指标直接加总不能正确反映不同作用力的综合结果,须先考虑改变逆指标数据性质,使所有指标对测评方案的作用力同趋化,再加总才能得出正确结果。数据无量纲化处理主要解决数据的可比性。数据标准化的方法有很多种,常用的有“最小—最大标准化”、“Z-score标准化”和“按小数定标标准化”等。经过上述标准化处理,原始数据均转换为无量纲化指标测评值,即各指标值都处于同一个数量级别上,可以进行综合测评分析。本回答被提问者和网友采纳
如何进行 NxN 矩阵的均值、标准差和众数统计
【中文标题】如何进行 NxN 矩阵的均值、标准差和众数统计【英文标题】:How to make the mean, standard deviation and mode statistics of an NxN matrix 【发布时间】:2021-08-17 18:51:41 【问题描述】:我想知道如何做 NxN 矩阵的平均值、标准差和众数统计。
有人可以建议如何在 python 中执行此操作吗?
【问题讨论】:
在向其他人寻求帮助之前,您可以在谷歌上搜索关键字,例如“python numpy 数组均值标准差模式统计”。你得到什么结果?点击链接,找到相关的方法/函数,然后尝试编写一些代码。 如果你还在苦苦挣扎,这里是numpy数组的主要统计方法的链接numpy.org/doc/stable/reference/routines.statistics.html 【参考方案1】:您可以通过计算出现次数并返回最大值来获取模式。 平均值是总和除以计数。 对于 stddev,您可以将平方距离相加,将其除以计数减 1,然后取平方根。
#! /usr/env python
import math
matrix = []
for i in range(9):
matrix.append([])
for x in range(9):
matrix[i].append(i+x*2)
mode =
avg = 0
stddev = 0
count = 0
for i in range(len(matrix)):
for x in range(len(matrix[i])):
avg+=matrix[i][x]
if matrix[i][x] in mode:
mode[matrix[i][x]]+=1
else:
mode[matrix[i][x]]=1
count+=1
maxcount = max(mode,key=mode.get)
avg /= count
# if you calculate the count from the dimensions...
# avg /= len(matrix)*len(matrix[0])
print(f'Mode = maxcount with mode[maxcount] occurrences')
print(f'Avg = avg')
# get the std dev
for i in range(len(matrix)):
for x in range(len(matrix[i])):
stddev += (matrix[i][x]-avg) ** 2
stddev /= count-1
print(f'Stddev = math.sqrt(stddev)')
【讨论】:
【参考方案2】:正如评论中指出的,这很容易通过搜索找到。
scipy 库为所有这些提供函数,无论是整个数组还是指定轴。 scipy.stats.describe 将同时给出均值和方差,标准差很容易从方差中计算出来。对于模式使用 scipy.stats.mode
对于均值和标准差,分别有 numpy.mean 和 numpy.std。
【讨论】:
以上是关于如何将大批量数据进行标准差标准化的主要内容,如果未能解决你的问题,请参考以下文章