matlab和python做zscore结果不一样的问题

news2024/9/30 17:39:48

解决matlab和python做zscore标准化结果不一样的问题

总结:

matlab和python做zscore时使用的求std公式的默认方法有差异,导致了结果差异。
想要结果相同则使用以下代码:

td = rand(50,15,39)%td是三维矩阵,求zscore结果
#Python代码:
tdzInPy = (td - np.mean(td, axis=1, keepdims=True)) / np.std(td,ddof=1, axis=1, keepdims=True)
#%对td第二维进行zscore,使用population standard deviation。

#Maltab代码:
tdzInMatlab = zscore(td,0,2);%对td第二维进行zscore,使用population standard deviation。
或
tdzInMatlab = zscore(td,[],2);%对td第二维进行zscore,使用population standard deviation。

代码中,变量tdzInPytdzInMatlab 的计算结果是完全一致的。都是使用的总体标准差:population standard deviation。

举一反三,若要使用样本标准差sample standard deviation:则:

td = rand(50,15,39,100)
#Python代码:
tdzInPy = (td - np.mean(td, axis=1, keepdims=True)) / np.std(td,ddof=0, axis=1, keepdims=True)
#%对td第二维进行zscore,使用population standard deviation。

#Maltab代码:
tdzInMatlab = zscore(td,1,2);%对td第二维进行zscore,使用population standard deviation。

总之: python中,ddof =0代表求总体标准差(Population Standard Deviation)【不指定时默认此方法】,ddof =1代表求样本标准差(Sample Standard Deviation)。而matlab中,flag =0代表求样本标准差【不指定时默认此方法】,flag =1代表总体标准差。
matlab和python做zscore使用的默认方法有差异,导致了结果差异。

原理:

matlab官方文档中给出了样本标准差总体标准差2者的计算公式:

Z = zscore(X, flag, dim) scales X using the standard deviation indicated by flag.

If flag is 0 (default默认是0), then zscore scales X using the sample standard deviation, with n - 1 in the denominator of the standard deviation formula. zscore(X,0) is the same as zscore(X).

If flag is 1, then zscore scales X using the population standard deviation, with n in the denominator of standard deviation formula.
样本标准差总体标准差的公式
上图是求样本标准差总体标准差的公式,样本标准差和总体标准差的差异就在分母上,差别其实不大。

python中:

在Python中,你可以使用NumPy库来计算样本标准差和总体标准差。下面是如何计算它们的示例:

首先,导入NumPy库:

import numpy as np

然后,假设你有一个数据集data,可以使用以下方法计算样本标准差和总体标准差:

计算样本标准差(Sample Standard Deviation):

sample_std_deviation = np.std(data, ddof=1)

其中,ddof参数用于指定自由度(degrees of freedom),通常设置为1以计算样本标准差。如果你的数据集代表整个总体而不是样本,你可以将ddof设置为0。

计算总体标准差(Population Standard Deviation):

population_std_deviation = np.std(data, ddof=0)

这两个函数将返回相应的标准差值。请根据你的数据集和需求使用适当的函数来计算标准差。
官方解释:
numpy.std(a, axis=None, dtype=None, out=None, ddof=0, keepdims=, *, where=)[source]
The average squared deviation is typically calculated as x.sum() / N, where N = len(x). If, however, ddof is specified, the divisor N - ddof is used instead. In standard statistical practice, ddof=1 provides an unbiased estimator of the variance of the infinite population. ddof=0 provides a maximum likelihood estimate of the variance for normally distributed variables. The standard deviation computed in this function is the square root of the estimated variance, so even with ddof=1, it will not be an unbiased estimate of the standard deviation per se.

总之

总之就是,python中,ddof =0代表求总体标准差(Population Standard Deviation)【不指定时默认此方法】,ddof =1代表求样本标准差(Sample Standard Deviation)。而matlab中,flag =0代表求样本标准差【不指定时默认此方法】,flag =1代表总体标准差。

#标准化
#归一化
#zscore
#maltab
#python

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/983945.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

爬虫逆向实战(29)-某蜂窝详情页(cookie、混淆、MD5、SHA)

一、数据接口分析 主页地址:某蜂窝 1、抓包 通过抓包可以发现数据是静态的,在html中。 2、判断是否有加密参数 请求参数是否加密? 无请求头是否加密? 无响应是否加密? 无cookie是否加密? 通过查看“c…

AIGC是不是有点虎头蛇尾

一、前言 2023年上半年AI与AIGC真是风风火火,不管是技术界还是资本界还是其他任何领域,如果你不知道chatgpt和AIGC,你就是个跟不上时代的人儿。如今大半年过去了,好像这个chatgpt和AIGC比没有太多的人提起,是不是有点…

ONNX OpenVino TensorRT MediaPipe NCNN Diffusers

框架 和Java生成的中间文件可以在JVM上运行一样,AI技术在具体落地应用方面,和其他软件技术一样,也需要具体的部署和实施的。既然要做部署,那就会有不同平台设备上的各种不同的部署方法和相关的部署架构工具 onnx 在训练模型时可以…

工业4.0时代生产系统对接集成优势,MES和ERP专业一体化管理-亿发

在现代制造业中,市场变化都在不断加速。企业面临着不断加强生产效率、生产质量和快速适应市场需求的挑战。在制造行业,日常管理中的ERP系统、MES系统就显得尤为重要。越来越多的企业正在采用MES系统和ERP管理系统的融合,以实现智能化生产管理…

手把手教你在linux中部署kong网关

一 Kong网关介绍 Kong是一个云原生,快速,可扩展的分布式微服务抽象层(也被称为API网关或API中间件), 它的核心价值是高性能和可扩展性,于2015年作为一个开源项目提供;Kong可以充当微服务请求的网关&#x…

SpringCloud环境搭建及入门案例

技术选型: Maven 3.8.4SpringBoot 2.7.8SpringCloud 2021.0.4SpringCloudAlibaba 2022.0.1.0Nacos 2.1.1Sentinel 1.8.5 模块设计: 父工程:SpringCloudAlibaba订单微服:order-service库存微服:stock-service 1.创建…

g++安装 yum -y install gcc+ gcc-c++ 报错Unable to find a match: gcc+

文章目录 1. Linux 中 g: command not found 解决方法2. g安装 yum -y install gcc gcc-c 报错Unable to find a match: gcc 1. Linux 中 g: command not found 解决方法 原因:G没有安装或者没有更新 解决方法如下: centos: yum -y update…

Vue echarts 饼图 引导线加小圆点,文字分行展示

需求 重点代码 完整代码 initChart() {// 创建 echarts 实例。var myChartOne this.$echarts.init(this.$refs.Echart);myChartOne.setOption({tooltip: {trigger: "item",},title: {top: center,text: [{name| this.chartTitle.name },{value| this.chartTitle.…

探索Kubernetes的高可用性:单master集群和多master节点集群方案

一、单Master集群 k8s 集群是由一组运行 k8s 的节点组成的,节点可以是物理机、虚拟机或者云服务器。k8s 集群中的节点分为两种角色:master 和 node。 master 节点:master 节点负责控制和管理整个集群,它运行着一些关键的组件&…

OpenCL编程指南-10.2使用C++包装器API的矢量相加示例

选择OpenCL平台并创建一个上下文 建立OpenCL的第一步是选择一个平台。第2章介绍过,OpenCL使用了ICD模型,其中可以有多个OpenCL实现在一个系统上并存。类似于HelloWorld示例,这个矢量相加程序展示了选择OpenCL平台的一种最简单的方法&#xf…

7000+客户经验总结,《数字化转型实践指南》重磅发布

数字化转型 2022年1月,国务院印发《“十四五”数字经济发展规划》,明确要求加快企业数字化转型升级,推进数字化转型,自此数字化转型又开启了新篇章。 调研数据显示,成功的数字化转型能让企业效率提升20-25倍&#xff…

微信小程序技术分享,以及项目实战:商城花园

目前移动端开发技术非常多,原生的有如下: 一、原生开发 Android Studio: 是用于开发 Android 应用的集成开发环境 (IDE)。 Xcode: 是用于开发 iOS 应用的 IDE。 鸿蒙HarmonyOS体系:华为官方提供的,HarmonyOS是一款面向万物互联时…

HTTPS加密协议详解:TLS/SSL握手过程

1、握手与密钥协商过程 基于RSA握手和密钥交换的客户端验证服务器为示例详解TLS/SSL握手过程。 (1).client_hello 客户端发起请求,以明文传输请求信息,包含版本信息,加密套件候选列表,压缩算法候选列表,随机数&#…

RabbitMQ: Publish/Subscribe结构

生产者 package com.qf.mq2302.publishSub;import com.qf.mq2302.utils.MQUtils;import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection;public class EmitLog {private static final String EXCHANGE_NAME "logs";public static void main…

word转PDF文件变小,图片模糊

word论文29M,文件——另存为——只有1.5M左右,图片压缩严重,图片看不清。 word中很多大图,5M一张的图,所以word很大。 找了很多方法,转换后都在2M左右,勉强可以。 直到找到了这个&#xff0c…

机器学习基础之《分类算法(6)—决策树》

一、决策树 1、认识决策树 决策树思想的来源非常朴素,程序设计中的条件分支结构就是if-else结构,最早的决策树就是利用这类结构分割数据的一种分类学习方法 2、一个对话的例子 想一想这个女生为什么把年龄放在最上面判断!!&…

PC调试手机微信浏览器

准备工具 一部手机 一台电脑 一条数据线 首先用数据线把手机与电脑连接 然后手机进入到开发者模式并且要是开启状态,具体进入方式,根据机型不同,进入方式不同,自行百度。 进入到开发者选项之后,开启USB调试模式。 然…

2023年最全ins商店开通运营攻略

借助 Instagram 商店,品牌可以策划一系列可购物的商品,这些商品可通过其 Instagram 个人资料直接访问。这使得在应用程序上销售更容易,也被潜在客户发现。 一、什么是Instagram Shop? Instagram 商店为商家提供了一种在 Instagra…

【Liunx】进程概念,查看进程,进程调用,创建子进程

进程 1.什么是进程2.查看进程3.常见进程调用4.创建子进程 1.什么是进程 以前我们在书上或者其他途径了解到进程的概念。 一个运行起来(加载到内存)的的程序叫做进程。 在内存中的程序叫做进程。 进程与程序相比具有动态属性。 这里的概念比较抽象&#…

Task :app:compileDebugKotlin FAILED

gradle.properties 里面加上 android.enableJetifiertrue