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

解决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.mzph.cn/news/71110.shtml

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

相关文章

人工智能客服:是跨境电商未来的趋势吗?

随着跨境电商的快速发展,客户服务成为了商家们越来越关注的焦点。而在客户服务领域中,人工智能客服正逐渐崭露头角。那么,人工智能客服是否是跨境电商未来的趋势呢?本文将探讨这个问题,并揭示人工智能客服的潜力和优势…

JS返回NodeList和HTMLCollection详解

HTML DOM 集合 (Collection) 概述 HTML DOM 集合 (Collection) 是一组 HTML 元素,这些元素可以通过 JavaScript 代码进行访问和操作。HTML DOM 集合通常由一个或多个 HTML 元素组成,并提供了访问和操作这些元素的方法。HTML DOM 集合在 JavaScript 中非常…

【前端demo】CSVJSON转换器 原生实现:CSV转换为JSON,JSON转换为CSV

文章目录 效果过程textareaTooltip提示工具按钮的min-width判断输入是否是CSV或JSONJSON与CSV样例JSON转为CSVCSV转为JSON不足之处 代码HTMLCSSJS 其他demo 效果 效果预览:CSV&JSON Converter (codepen.io) 参照的预览:JSV Converter(gpaiva00.git…

Redis未授权访问漏洞实战

文章目录 概述Redis概述Redis 介绍Redis 简单使用Redis未授权漏洞危害 漏洞复现启动靶场环境POC漏洞验证EXP漏洞利用 总结 本次测试仅供学习使用,如若非法他用,与平台和本文作者无关,需自行负责! 概述 ​ 本文章主要是针对于vulh…

5、Spring之Bean生命周期源码解析(销毁)

Bean的销毁过程 Bean销毁是发送在Spring容器关闭过程中的。 在Spring容器关闭时,比如: AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); UserService userService = (UserService) context.getBean("userSe…

​Vue + Element UI前端篇(二):Vue + Element 案例 ​

Vue Element UI 实现权限管理系统 前端篇(二):Vue Element 案例 导入项目 打开 Visual Studio Code,File --> add Folder to Workspace,导入我们的项目。 安装 Element 安装依赖 Element 是国内饿了么公司提…

Python入门学习12

一、Python包 什么是Python包 从物理上看,包就是一个文件夹,在该文件夹下包含了一个 __init__.py 文件,该文件夹可用于包含多个模块文件。从逻辑上看,包的本质依然是模块 包的作用: 当我们的模块文件越来越多时,包可以帮助我们管…

在外SSH远程连接macOS服务器【cpolar内网穿透】

文章目录 前言1. macOS打开远程登录2. 局域网内测试ssh远程3. 公网ssh远程连接macOS3.1 macOS安装配置cpolar3.2 获取ssh隧道公网地址3.3 测试公网ssh远程连接macOS 4. 配置公网固定TCP地址4.1 保留一个固定TCP端口地址4.2 配置固定TCP端口地址 5. 使用固定TCP端口地址ssh远程 …

划片机实现装片、对准、切割、清洗到卸片的自动化操作

划片机是一种用于切割和分离材料的设备,通常用于光学和医疗、IC、QFN、DFN、半导体集成电路、GPP/LED氮化镓等芯片分立器件、LED封装、光通讯器件、声表器件、MEMS等行业。划片机可以实现从装片、对准、切割、清洗到卸片的自动化操作。 以下是划片机实现这些操作的步…

既然有 HTTP 协议,为什么还要有 RPC

HTTP和RPC 什么是HTTP HTTP协议(Hyper Text Transfer Protocol),又叫做超文本传输协议。平时上网在浏览器上敲个网址就能访问网页,这里用到的就是HTTP协议。 什么是RPC RPC(Remote Procedure Call)&…

小程序 target 与 currentTarget(详细)

小程序中关于事件对象 e 的属性中有两个特别重要的属性:target与currentTarget属性:对于这两个属性,官方文档上的解释是: target:事件源组件对象currentTarget:当前组件对象由于官方解释太过精炼,下面仔细讲讲其中的含义,先看一段代码: <view id="outter&quo…

iPhone 14四款机型电池容量详细参数揭秘

苹果推出的iPhone 14系列与2021系列的设计和外形尺寸相同&#xff08;仅缩小了几分之一毫米&#xff09;&#xff0c;所以这并不奇怪&#xff0c;但电池容量也大致相同。 虽然可能不足以对电池寿命产生可衡量的影响&#xff0c;但也存在微小的差异。不同的是&#xff0c;现在有…

【OceanBase概念】国产数据库OceanBase的那些事儿(1)初识OceanBase

文章目录 写在前面涉及知识点1、OceanBase是什么&#xff1f;1.1基本概念1.2发展历史 2、TPC-C认证2.1什么是TPCC2.2OceanBase认证成果 3、OceanBase应用场景3.1行业应用A、金融行业B、电信运营行业C、保险行业D、初创互联网行业 3.2内部应用A、支付宝B、淘宝C、网商银行D、Pay…

实现Map批量赋值,我只需24秒搞定!

函数的功能是将一组键值对批量赋值给Map中的键。在Java中&#xff0c;通常使用Map的put方法逐个将键值对赋值给Map&#xff0c;但在某些场景下&#xff0c;可能需要一次性将多个键值对赋值给Map。 函数功能&#xff1a;Map批量赋值 参数1&#xff1a;参数名称&#xff1a;targ…

C语言学习:6、C语言程序的循环结构

生活中&#xff0c;有很多循环的东西&#xff0c;比如钟表就是在1到12循环&#xff0c;太阳东升西落也是循环&#xff0c;春夏秋冬也是循环&#xff0c;人生可能也是一个循环。 while C语言中的循环可以这么描述&#xff1a;当某个条件成立&#xff0c;就一直做某件事或某些事…

煤矿虚拟仿真 | 采煤工人VR虚拟现实培训系统

随着科技的发展&#xff0c;虚拟现实(VR)技术已经逐渐渗透到各个行业&#xff0c;其中包括煤矿行业。VR技术可以为煤矿工人提供一个安全、真实的环境&#xff0c;让他们在虚拟环境中进行实际操作和培训&#xff0c;从而提高他们的技能水平和安全意识。 由广州华锐互动开发的采煤…

跳槽面试:如何转换工作场所而不失去优势

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

LeetCode 82 删除排序链表中的重复元素 II

LeetCode 82 删除排序链表中的重复元素 II 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/description/ 博主Github&#xff1a;https://github.com/GDUT-Rp/LeetCode 题目&am…

vue中使用window.open打开assets文件夹下的pdf文件

需求&#xff1a;系统有个操作手册&#xff0c;点击会在浏览器新开个窗口并打开pdf文件。这个pdf文件存储在本地assets文件夹中。 文件结构&#xff1a; 注&#xff1a;直接使用window.open(文件路径)不能打开&#xff0c;需要在vue.config.js中配置所需文件 引入图中红框中的…

QTableWidget实现鼠标悬停整行高亮显示

一、最终效果 二、 重写QTableWidget类 mytablewidget.h #ifndef MYTABLEWIDGET_H #define MYTABLEWIDGET_H#include <QTableWidget>class MyTableWidget : public QTableWidget { public:explicit MyTableWidget(QWidget* parent nullptr);protected:void leaveEve…