数据预处理手段之【数据归一化】

概述

数据归一化是机器学习和数据科学中的一个重要步骤,它可以将数据规范到同一尺度,有助于算法的收敛和性能。常用的数据归一化方法有以下几种:

  1. 线性归一化(Min-Max Scaling)
    这种方法通过对原始数据进行线性变换,将数据映射到指定的范围(通常为0和1之间)。公式为:
    X norm = X − X min X max − X min X_{\text{norm}} = \frac{X - X_{\text{min}}}{X_{\text{max}} - X_{\text{min}}} Xnorm=XmaxXminXXmin
    其中 X X X是原始数据, X min X_{\text{min}} Xmin X max X_{\text{max}} Xmax分别是数据集中的最小值和最大值。
  2. Z-Score标准化(Zero-Mean Normalization)
    Z-Score标准化是基于原始数据的均值和标准差进行的。这种方法将数据转换为均值为0,标准差为1的分布。公式为:
    X norm = X − μ σ X_{\text{norm}} = \frac{X - \mu}{\sigma} Xnorm=σXμ
    其中 μ \mu μ是数据的均值, σ \sigma σ是数据的标准差。
  3. 最大绝对值归一化
    这种方法通过将每个数据点除以其最大绝对值来进行归一化。公式为:
    X norm = X X max-abs X_{\text{norm}} = \frac{X}{X_{\text{max-abs}}} Xnorm=Xmax-absX
    其中 X max-abs X_{\text{max-abs}} Xmax-abs是数据集中的最大绝对值。
  4. 对数归一化
    对数归一化首先对数据进行对数转换,然后进行线性归一化。这种方法适用于数据分布呈现指数级别的差异。公式为:
    X norm = log ⁡ ( X ) − log ⁡ ( X min ) log ⁡ ( X max ) − log ⁡ ( X min ) X_{\text{norm}} = \frac{\log(X) - \log(X_{\text{min}})}{\log(X_{\text{max}}) - \log(X_{\text{min}})} Xnorm=log(Xmax)log(Xmin)log(X)log(Xmin)
  5. 反余切归一化
    这种方法通过对每个数据应用反余切函数(arctan)来进行归一化。适用于数据分布非常广泛的情况。
  6. 幂律归一化
    幂律归一化通过对数据进行幂次变换来进行归一化,通常用于数据分布不均匀且存在极端值的情况。
  7. L1和L2范数归一化
    L1和L2范数归一化分别通过将数据除以其L1范数和L2范数的平方根来进行归一化。这种方法常用于文本处理和特征工程中。

每种归一化方法都有其适用场景,选择合适的归一化方法对于模型的性能至关重要。在实际应用中,应根据数据的特性和模型的需求来选择最合适的归一化方法。

常见归一化方法比较

以下是各种数据归一化方法的优缺点及适合的场景:

  1. 线性归一化(Min-Max Scaling)
    • 优点:简单易实现,结果易于理解,归一化后的数据被限定在特定的范围内,如[0,1]。
    • 缺点:容易受到异常值的影响,因为它是基于数据的最大值和最小值进行归一化的。
    • 适合场景:对输出范围有严格要求时,如某些神经网络算法需要输入在[0,1]之间。
  2. Z-Score标准化(Zero-Mean Normalization)
    • 优点:不受异常值的影响,因为它是基于数据的均值和标准差进行归一化的。
    • 缺点:当数据分布非常倾斜时,可能不适用,因为其假设数据服从正态分布。
    • 适合场景:数据分布近似正态分布,或者对数据的分布形状没有严格要求时。
  3. 最大绝对值归一化
    • 优点:简单,适用于数据中存在负数的情况,保留了数据的大小关系。
    • 缺点:同样容易受到异常值的影响,特别是当异常值的绝对值非常大时。
    • 适合场景:数据中存在正负值,且对数据的相对大小有要求时。
  4. 对数归一化
    • 优点:能够较好地处理数据分布非常倾斜的情况,尤其是数据范围跨越多个数量级时。
    • 缺点:不适用于非正的数据,因为对数函数在负数和零处未定义。
    • 适合场景:数据分布呈现指数级别差异,如股票价格、人口数量等。
  5. 反余切归一化
    • 优点:能够将任何数值归一化到(-π/2, π/2)的范围内,适合某些需要在这个范围内处理数据的算法。
    • 缺点:计算复杂度较高,且归一化后的数据解释性较差。
    • 适合场景:需要将数据归一化到特定范围内的特殊算法。
  6. 幂律归一化
    • 优点:能够有效地处理存在极端值的数据集,通过调整幂次可以改变数据的分布。
    • 缺点:需要选择合适的幂次,选择不当可能导致归一化效果不佳。
    • 适合场景:数据分布非常不均匀,且存在极端值的情况。
  7. L1和L2范数归一化
    • 优点:L1范数归一化能够产生稀疏的特征向量,有利于特征选择;L2范数归一化能够保持数据的几何关系。
    • 缺点:L1和L2范数归一化可能会改变数据的分布,影响某些算法的性能。
    • 适合场景:特征工程中,需要减少特征之间的量级差异,或者进行特征选择时。

在选择归一化方法时,需要考虑数据的特性、算法的要求以及业务场景的具体需求。通常,最好的做法是对数据进行可视化分析,然后根据数据的分布和算法的特性来选择最合适的归一化方法。

使用示例

对于上面列出的归一化方法,sklearn库中提供了相应的类和函数来实现这些方法(部分没有,需要自己实现)。
以下是sklearn中对应的归一化方法:

  1. 线性归一化(Min-Max Scaling)
    • sklearn类:MinMaxScaler
  2. Z-Score标准化(Zero-Mean Normalization)
    • sklearn类:StandardScaler
  3. 最大绝对值归一化
    • sklearn没有直接提供这种方法,但可以通过自定义函数或使用MaxAbsScaler类来实现,该类将每个特征缩放到最大绝对值。
  4. 对数归一化
    • sklearn没有直接提供这种方法,但可以通过结合使用MinMaxScalernp.log1p(或np.log,取决于是否包含零值)来实现。
  5. 反余切归一化
    • sklearn没有直接提供这种方法,需要自定义函数实现。
  6. 幂律归一化
    • sklearn没有直接提供这种方法,需要自定义函数实现。
  7. L1和L2范数归一化
    • sklearn提供了Normalizer类,可以通过设置norm参数为'l1''l2'来实现L1或L2范数归一化。

以下是sklearn中一些常用归一化方法的示例代码:

from sklearn.preprocessing import MinMaxScaler, StandardScaler, MaxAbsScaler, Normalizer
# 假设 X 是一个包含特征的数据矩阵

# 线性归一化(Min-Max Scaling)
mm_scaler = MinMaxScaler()
X_mm = mm_scaler.fit_transform(X)

# Z-Score标准化(Zero-Mean Normalization)
std_scaler = StandardScaler()
X_std = std_scaler.fit_transform(X)

# 最大绝对值归一化
max_abs_scaler = MaxAbsScaler()
X_max_abs = max_abs_scaler.fit_transform(X)

# L1和L2范数归一化
l1_normalizer = Normalizer(norm='l1')
X_l1 = l1_normalizer.fit_transform(X)
l2_normalizer = Normalizer(norm='l2')
X_l2 = l2_normalizer.fit_transform(X)

在使用这些归一化方法时,通常需要先使用fit方法来计算所需的参数(如数据的最大值、最小值、均值和标准差),然后使用transform方法来对数据进行转换。如果要在单个步骤中完成这两个操作,可以使用fit_transform方法。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

43.139.152.26 C07L01P02 数字8

题目描述 不超过 N 位的正整数中包含有多少数字 8 ? 输入格式 一行 1 个正整数 N ,范围 [1,16]。 输出格式 一个整数。 输入数据 1 2输出数据 1 20样例解释 8,18,28,38,48,58,68,78,88, 98 与 80,81,82,83,84,85,86,87,89 这些数中有 8 &#xff0…

菜鸡学习netty源码(四)—— EventLoop

1.概述 我们前面进行过分析,channel为netty网络操作的抽象类,EventLoop负责处理注册到其上的Channel处理的I/O事件;EventLoopGroup是一个EventLoop的分组,它可以获取到一个或者多个的EventLoop对象。 2.类关系图 NioEventLoopGroup的类继承图,蓝色部分为对应的java类,绿…

使用Jellyfin创建媒体库

目录 前言 1.介绍Jellyfin 2.安装 3.设置时注意点 4.效果 5.内存占用 前言 分为客户端和服务器端,这里讲的是服务器端的安装 1.介绍Jellyfin Jellyfin 是一个免费开源的媒体服务器软件,它允许您管理和播放您的媒体文件。这些媒体文件可以包括电…

crossover软件是干嘛的 CrossOver软件好用吗 crossover最新2024使用方法教程 MacBook怎么安装exe软件

CrossOver软件是干嘛的 CrossOver由CodeWeavers公司开发,目的是使linux和Mac OS X操作系统和windows系统兼容。这样使用户可以将windows系统上的应用在linux或Mac os上运行。 CrossOver让您可以在Mac和Linux系统上运行Microsoft Windows应用,不必购买W…

第19章 基于质量特性的测试技术

一、功能性测试 (一)测试方法 等价类边界值法因果图法判定表法场景法 (二)用例 1、正常用例 2、异常用例 (三)完备性 1、功能覆盖率 2、X1-A/B 功能覆盖率X:软件实际功能覆盖文档中所有…

Linux的socket详解

一、本机直接的进程通信方式 管道(Pipes): 匿名管道(Anonymous pipes):通常用于父子进程间的通信,它是单向的。命名管道(Named pipes,也称FIFO):允…

2023第十四届蓝桥杯国赛C/C++ 大学 A 组 圆上的连线

思路:很显然总的方案数等于挑选偶数点的方案数乘以对应偶数点的连线方案数之和,挑选偶数点的方案数靠组合数得出,偶数点的连线方案数就是个卡特兰数。具体为什么是卡特兰数,可以任选一个点,枚举这个点所连边的位置&…

Linux搭建sqlilabs靶场

提前准备: 文章中所使用到的Linux系统:Ubantu20.4sqlilabs靶场下载地址:GitHub - Audi-1/sqli-labs: SQLI labs to test error based, Blind boolean based, Time based. 一. 安装phpstudy phpstudy安装命令:wget -O install.sh h…

python爬虫实战

import requests import json yesinput(输入页数:) yesint(yes)headers {"accept": "application/json, text/plain, */*","accept-language": "zh-CN,zh;q0.9","content-type": "application/json",…

仿知乎网站问答源码,开源版

仿知乎网站问答源码,开源版 需要一定动手能力 发文章,发视频,发想法,提问回答,注册登录 开发环境 使用技术:springbootthymeleafRedis; 开发环境:tomcat8.0,jdk8.0, ID…

RKNN Toolkit2 工具的使用

RKNN Toolkit2 是由瑞芯微电子 (Rockchip) 开发的一套用于深度学习模型优化和推理的工具。它主要面向在瑞芯微SoC上进行AI应用开发,但也可以用于PC平台进行模型的转换、量化、推理等操作。它支持将多种深度学习框架的模型(如Caffe, TensorFlow, PyTorch等…

如何优雅的分析你的微信朋友圈和聊天记录

微信朋友圈、个人聊天记录、微信群聊天记录: 蓝奏云:链接:​www.lanzoub.com/b00rn0g47e 密码:9hww

SPARC VScode EIDE GDB 使用配置

前言 搞了多年的SPARC 最近接触了VSCODE插件感觉好用。想想看不是能方便调试和编译SPARC,决定使用开源的SPARC仿真环境和编译器来试试。感觉的却不错,借此献给使用SPARC的朋友们。安装 1.找微软官方的下载VSCODE. 2.电机左边的方块形状的图标&#xff0…

周鸿祎成了中国新能源汽车的顶流IP

关注卢松松,会经常给你分享一些我的经验和观点。 以后开公司创业,老板自己做网红是标配。 这句话是我在看了红衣大叔这段时间的操作后发的朋友圈。 短短半年时间(2023.12—2024.5),周鸿祎就从一名传统互联网企业家变成了新能源汽车顶流IP…

C++相关概念和易错语法(10)(定位new、模板)

1.定位new 我们使用类来实例化对象,开辟空间的时候会自动去调用它的构造函数。但在那篇博客我就特意强调过,使用a.A()的方式是错误的,A()根本不会被识别为一个构造函数,而会被识别为A类型。因此我们要注意最好在实例化对象&#…

2024/5/4 英语每日一段

But something is slowing that rocket down: lack of access to the types of data used to train robots so they can interact more smoothly with the physical world.It’s far harder to come by than the data used to train the most advanced AI models like GPT—mos…

08 IRF技术 华三交换机实现

IRF 详细介绍 我知道 AI IRF 技术是指集成路由功能(Integrated Routing and Bridging)技术,是惠普(Hewlett Packard)公司开发的一种基于硬件的虚拟化技术。IRF 技术可以将多台物理设备组合成一个逻辑设备,实现设备的高可用性和灵活性。 IRF 技术主要有以下特点: 1. …

Linux---为什么会有粘滞位?

在前面已经讲过目录的rwx权限: 可读权限(r): 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容. 有可写权限(w):如果目录没有可写权限,则无法在目录中创建文件, 也无法在目录中删除文件.可执行权限(x): 如果目录没有可执行权限, 则无法cd到…

五一后返工,3招帮你快速找回状态!

五一假期即将结束,如何快速进入工作状态 随着五一假期的临近结束,我们即将迎来新的工作挑战。在享受了短暂的休息和放松之后,重新调整心态,迅速进入工作状态显得尤为重要。本文将为您提供一些实用的方法和建议,帮助您…

Elasticsearch中【文档查询】DSL语句以及对应的Java实现

目录 全文检索查询 精准查询 布尔查询 排序、分页查询 高亮 地理查询 复合查询 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括: 查询所有:查询出所有数据,一般测…
最新文章