深度学习中几种常见数据标准化方法

目录

一、介绍

二、总结

三、详情 

1. StandardScaler

2. MinMaxScaler

3. RobustScaler

4. MaxAbsScaler

5. Normalizer

6. QuantileTransformer

7. PowerTransformer

8. Log Transform

四、示例 

五、心得


一、介绍

方法名称缩放范围适用条件
StandardScaler均值为0,方差为1数据具有正态分布的情况下效果最佳
MinMaxScaler[0, 1]数据分布不平衡或有明显的上下界限
RobustScaler根据四分位数缩放数据包含异常值
MaxAbsScaler[-1, 1]数据已经中心化,即没有偏移
Normalizer每个样本的范数为1样本之间有显著的差异,需要将其归一化
QuantileTransformer[0,1]或正态分布数据分布不均匀
PowerTransformer (Yeo-
Johnson)
均值为0,方差为1数据具有正态分布或接近正态分布
Log Transform非负数据的对数缩放数据必须为正值或非负值

二、总结

  • StandardScaler:适用于数据本身的分布近似正态分布,通过将数据缩放到均值为0、方差为1,消除不同特征的量纲影响。
  • MinMaxScaler:将数据缩放到指定的最小值和最大值(默认是0和1)之间,适合数据分布有明显上下界的情况。
  • RobustScaler:基于四分位数进行缩放,对于异常值不敏感,适用于数据包含离群点的情况。
  • MaxAbsScaler:将数据缩放到最大绝对值为1,适用于已经中心化的数据,特别适合稀疏数据
  • Normalizer:对每个样本独立进行缩放,将其范数缩放为1,适用于需要将样本归一化的情况。
  • QuantileTransformer:通过非线性变换将数据转换为均匀分布或正态分布,适用于数据分布不均匀的情况。
  • PowerTransformer (Yeo-Johnson):对数据进行幂变换,使其更接近正态分布,适用于包含负值的数据。
  • Log Transform:对数据进行对数变换,适用于数据呈指数型增长的情况,但要求数据必须为正值或非负值

 

三、详情 

1. StandardScaler

        功能: 通过将数据的均值调整为0,标准差调整为1,使数据服从标准正态分布。

        公式: X_{\text {scaled }}=\frac{X-\mu}{\sigma}  其中,\mu 是均值,\sigma 是标准差。

        适用场景: 大多数机器学习算法,特别是假设数据服从正态分布的算法,如线性回归、逻辑回归和支持向量机。

2. MinMaxScaler

        功能: 将数据缩放到给定的最小值和最大值(通常是0和1)之间。

        公式: X_{\text {scaled }}=\frac{X-X_{\min }}{X_{\max }-X_{\min }}

        适用场景: 数据范围已知且确定要将数据缩放到特定范围内的场景,例如图像处理(像素值通常在0到255之间)。

3. RobustScaler

        功能: 使用中位数和四分位距进行缩放,适用于包含异常值的数据。

        公式: X_{\text {scaled }}=\frac{X-\operatorname{median}(X)}{I Q R(X)} 其中,I Q R 表示四分位距(75th percentile - 25th percentile)。

        适用场景: 数据中存在较多异常值。

4. MaxAbsScaler

        功能: 按每个特征的最大绝对值进行缩放,使数据在 [-1, 1] 范围内。

        公式: X_{\text {scaled }}=\frac{X}{\max (|X|)}

        适用场景: 数据已经被稀疏化且包含正负值。

5. Normalizer

        功能: 将每个样本缩放为单位范数(通常是L2范数),使每个样本的向量长度为1。

        公式: X_{\text {scaled }}=\frac{X}{\|X\|}

        适用场景: 当你希望将数据缩放为相同的尺度(单位向量)以用于聚类或其它机器学习算法。

6. QuantileTransformer

        功能: 通过将数据转换为服从均匀分布或高斯分布,减小数据中的偏态和异常值的影响。

        方法:使用分位数进行转换。

        适用场景: 当数据具有很强的偏态或需要服从特定分布时。

7. PowerTransformer

        功能: 使用幂变换(如Box-Cox或Yeo-Johnson)将数据变换为更接近正态分布的形式。

         公式: Box-Cox变换: X_{\text {new }}=\frac{X^\lambda-1}{\lambda}​ (需要所有值为正)

                   Yeo-Johnson变换: 适用于正负值数据。

        适用场景: 当数据分布明显偏离正态分布且包含负值时。

8. Log Transform

        功能: 通过对数据应用对数变换,减小数据的偏态。

        公式: X_{\text {new }}=\log (X+1)

        适用场景: 数据具有指数增长或极度偏态分布。

四、示例 

import numpy as np
from sklearn.preprocessing import StandardScaler, MinMaxScaler, RobustScaler, MaxAbsScaler, Normalizer, QuantileTransformer, PowerTransformer# 示例数据
data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# StandardScaler
standard_scaler = StandardScaler()
data_standard_scaled = standard_scaler.fit_transform(data)
print("StandardScaler:", data_standard_scaled)# MinMaxScaler
minmax_scaler = MinMaxScaler()
data_minmax_scaled = minmax_scaler.fit_transform(data)
print("MinMaxScaler:", data_minmax_scaled)# RobustScaler
robust_scaler = RobustScaler()
data_robust_scaled = robust_scaler.fit_transform(data)
print("RobustScaler:", data_robust_scaled)# MaxAbsScaler
max_abs_scaler = MaxAbsScaler()
data_max_abs_scaled = max_abs_scaler.fit_transform(data)
print("MaxAbsScaler:", data_max_abs_scaled)# Normalizer
normalizer = Normalizer()
data_normalized = normalizer.fit_transform(data)
print("Normalizer:", data_normalized)# QuantileTransformer
quantile_transformer = QuantileTransformer(output_distribution='normal')
data_quantile_transformed = quantile_transformer.fit_transform(data)
print("QuantileTransformer:", data_quantile_transformed)# PowerTransformer (Yeo-Johnson)
power_transformer_yeo_johnson = PowerTransformer(method='yeo-johnson')
data_power_yeo_johnson_transformed = power_transformer_yeo_johnson.fit_transform(data)
print("PowerTransformer (Yeo-Johnson):", data_power_yeo_johnson_transformed)# Log Transform
data_log_transformed = np.log1p(data)  # 使用log1p避免对零值进行log变换时出现负无穷大
print("Log Transform:", data_log_transformed)

五、心得

        最常用的还是 StandardScaler 或者 MinMaxScaler,其他的几种标准化方法很少用到,不到特殊情况下不要轻易尝试。

        当换了一种标准化方法时,切记模型中的激活函数可能也要跟随调整。

 

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

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

相关文章

vue基础P7-17

1、模板语法 插值语法 {{xxxx}}用在标签体中&#xff0c;也就是<>{{xxx}}</> xxx是js表达式&#xff0c;有返回值&#xff0c;如num1、Date.now()。不是js代码 指令语法 以v开头&#xff0c;用于解析标签&#xff0c;包括标签属性、标签体内容、绑定事件 v-o…

web前端常识:深入理解与实战应用

web前端常识&#xff1a;深入理解与实战应用 Web前端作为现代互联网技术的核心组成部分&#xff0c;涉及的知识点既广泛又深入。对于初学者和进阶者而言&#xff0c;掌握Web前端常识是构建扎实基础、提升技能水平的关键。本文将从四个方面、五个方面、六个方面和七个方面对Web…

python 判断点和线段相交

python 判断点和线段相交 import numpy as np import cv2 import numpy as npdef point_to_line_distance(points, line_segments):# line_segments [[549, 303], [580, 303]]# points [565, 304]x0, y0, x1, y1line_segments[0][0], line_segments[0][1], line_segments[1]…

【python】OpenCV GUI——Trackbar(14.2)

学习来自 OpenCV基础&#xff08;12&#xff09;OpenCV GUI中的鼠标和滑动条 文章目录 GUI 滑条介绍cv2.createTrackbar 介绍牛刀小试 GUI 滑条介绍 GUI滑动条是一种直观且快速的调节控件&#xff0c;主要用于改变一个数值或相对值。以下是关于GUI滑动条的详细介绍&#xff1a…

win10文件夹.git或者文件被隐藏的开启姿势

按需排查&#xff0c;有的文件隐藏是好事 基本操作更多操作某些系统设置的隐藏操作在idea或者pycharm项目中显示.git文件夹 基本操作 文件夹-> 查看 -> 隐藏的项目点亮 更多操作 文件夹 -> 查看 -> 选项 -> 查看 -> 高级设置 -> 文件和文件夹 -> 隐…

服务器部署spring项目jar包使用bat文件,省略每次输入java -jar了

echo off set pathC:\Program Files\Java\jre1.8.0_191\bin START "YiXiangZhengHe-8516" "%path%/java" -Xdebug -jar -Dspring.profiles.activeprod -Dserver.port8516 YiXiangZhengHe-0.0.1-SNAPSHOT.jar 将set path后面改成jre的bin文件夹 START 后…

knoXSS(case01~10)

case 01: 先在每个框里都输入:<script>alert(1)</script> 检查源码 这里第三个和第四个点都被处理过了&#xff0c;所以先考虑第一个和第二个点 这里试了一下&#xff0c;发现GET也能传参&#xff0c;所以构造 成功 case 02: 这里发现变量a和这个似乎有关联&…

专业学习|南开大学《随机过程》学习笔记(一)

&#xff08;1&#xff09;有哪些经典的关于基本随机过程的书籍推荐&#xff1f; 对于想要系统学习基本随机过程的学生来说&#xff0c;可以参考Sheldon M.Rose编著的经典著作《随机过程》。该书涉及的内容也比较宽泛。但并不局限于单个细节论证。 此外&#xff0c;萨缪尔科林(…

嵌入式学习——Linux高级编程复习(标准IO)——day36

1. 标准IO概念——&#xff08;有缓存、流指针&#xff09; &#xff08;1&#xff09;标准IO是编程语言中处理输入和输出的一种通用方法&#xff0c;涉及以下三个预定义的文件指针&#xff1a; 1. stdin&#xff1a;标准输入&#xff0c;通常默认关联到键盘输入。 2. stdout&…

抓住时机的核心:坚持学习准备着

在这个快节奏的时代&#xff0c;时间对于每个人来说都是宝贵的。能否在合适的时间做正确的事情&#xff0c;往往决定了我们成功的概率。但同时&#xff0c;我们也要认识到&#xff0c;逆风翻盘虽少&#xff0c;却并非不可能。在这个过程中&#xff0c;投资自己&#xff0c;投资…

LabVIEW与Python的比较及联合开发

LabVIEW和Python在工业自动化和数据处理领域各具优势&#xff0c;联合开发可以充分发挥两者的优点。本文将从语言特性、开发效率、应用场景等多个角度进行比较&#xff0c;并详细介绍如何实现LabVIEW与Python的联合开发。 语言特性 LabVIEW 图形化编程&#xff1a;LabVIEW使用…

【数据结构】队列的应用(详解)

目录 0 引言 1 打印机任务队列 2 广度优先搜索&#xff08;BFS&#xff09; 3 总结 0 引言 队列&#xff08;Queue&#xff09;是一种先进先出&#xff08;FIFO&#xff09;的数据结构&#xff0c;它允许在尾部添加元素&#xff08;入队操作&#xff09;&#xff0c;并…

三维地图Cesium,加载一个模型,模型沿着给定的一组经纬度路线移动

目录 实现效果 实现思路 功能点 选择移动路线 加载模型和移动路线 重新运行 指定位置(经纬度点)开始移动 视角切换 到站提示 运行 停止 联动接口 完整代码 html js逻辑 trainOperation.js sourceData.js gitee仓库项目代码 疑问解答 实现效果 三维地图Cesiu…

CopyOnWriteArrayList详解

目录 CopyOnWriteArrayList详解1、CopyOnWriteArrayList简介2、如何理解"写时复制"3、CopyOnWriteArrayList的继承体系4、CopyOnWriteArrayList的构造函数5、CopyOnWriteArrayList的使用示例6、CopyOnWriteArrayList 的 add方法7、CopyOnWriteArrayList弱一致性的体现…

LeetCode790多米诺和托米诺平铺

题目描述 有两种形状的瓷砖&#xff1a;一种是 2 x 1 的多米诺形&#xff0c;另一种是形如 “L” 的托米诺形。两种形状都可以旋转。给定整数 n &#xff0c;返回可以平铺 2 x n 的面板的方法的数量。返回对 109 7 取模 的值。平铺指的是每个正方形都必须有瓷砖覆盖。两个平铺…

Android基础-binder机制

一、引言 在Android系统中&#xff0c;进程间的通信&#xff08;IPC&#xff09;是一个至关重要的概念。不同于传统操作系统中的进程间通信方式&#xff0c;如管道、消息队列、信号量、共享内存等&#xff0c;Android采用了独特的Binder机制来实现进程间的通信。Binder机制不仅…

Qt 读取excel文件

在Qt中&#xff0c;你可以使用QtXlsxWriter库来对Excel文件进行操作。QtXlsxWriter是一个开源库&#xff0c;用于在Qt应用程序中生成和编辑Excel文件。以下是如何使用QtXlsxWriter库在Qt中对Excel文件进行操作的步骤&#xff1a; 添加QtXlsxWriter库到你的Qt项目中。可以通过在…

先进封装技术的一些优缺点探讨

半导体封装技术是半导体制造过程中的关键环节&#xff0c;它不仅保护了芯片免受物理损伤&#xff0c;还提供了电气连接和散热功能。随着技术的发展&#xff0c;出现了多种先进的封装技术&#xff0c;每种技术都有其特定的应用场景和优缺点。 --> 1. 传统封装技术 【优点】&…

【SpringBoot + Vue 尚庭公寓实战】根据类型查询标签列表接口实现(五)

【SpringBoot Vue 尚庭公寓实战】根据类型查询标签列表接口实现&#xff08;五&#xff09; 文章目录 【SpringBoot Vue 尚庭公寓实战】根据类型查询标签列表接口实现&#xff08;五&#xff09;1、查看接口2、进行开发 1、查看接口 启动项目 访问&#xff1a;http://localho…

macOS优化工具CleanMyMac2024免费版电脑性能提升 存储空间释放 电脑维护 高效易用 延长电脑使用寿命

【CleanMyMac】是一款专为macOS系统设计的优化和清理软件&#xff0c;它的核心特性就是帮助我们提升电脑性能&#xff0c;释放存储空间。&#x1f680; CleanMyMac绿色免费版下载如下&#xff1a;记得保存哈&#xff0c;以防失效&#xff1a; https://pan.quark.cn/s/9b08114…