Python数据归一化实战:MinMax与Z-Score详解

周末不加班
周末不加班
发布时间:2026-10-11| 5人浏览过
原创

数据归一化是机器学习中消除量纲影响的关键步骤。本文深入解析Python中两种最常用的归一化方法:Min-Max标准化(离差标准化)与Z-Score标准化(均值归一化)。通过具体代码示例,展示如何使用NumPy和sklearn库实现数据缩放,并探讨其数学原理、参数配置及适用场景。

数据归一化的核心目的

在构建多指标综合评价模型或机器学习算法时,不同特征往往具有不同的量纲和数值范围。例如,年龄可能在0-100之间,而收入可能在几千到几万之间。这种差异会导致模型对大数值特征赋予过高的权重,从而产生偏差。数据归一化的核心目标是将所有指标映射到同一数量级,消除量纲影响,使各指标处于可对比的状态。

Min-Max标准化(离差标准化)

Min-Max标准化是一种线性变换方法,它将原始数据映射到指定的区间,最常用的是[0, 1]。这种方法能够保持原始数据的分布形状,同时增强方差非常小的属性的稳定性,并维持稀疏矩阵中为0的条目。

1. 数学原理

转换公式如下:

X_scaled = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))

其中,X.min(axis=0)为样本最小值,X.max(axis=0)为样本最大值。需要注意的是,如果新加入的数据超出原有范围,最大值和最小值会发生变化,导致归一化结果改变。因此,在实际应用中,通常需要固定训练集的最大最小值用于测试集。

2. 代码实现

方法一:使用NumPy手动实现

import numpy as np
 
arr = np.asarray([0, 10, 50, 80, 100])
for x in arr:
  x = float(x - np.min(arr))/(np.max(arr)- np.min(arr))
  print x
 
# output
# 0.0
# 0.1
# 0.5
# 0.8
# 1.0

方法二:使用sklearn的MinMaxScaler

sklearn提供了专门的MinMaxScaler类,支持指定输出范围(feature_range)。当指定范围时,应用公式变为线性变换。

from sklearn import preprocessing  
 
import numpy as np 
 
X = np.array([[ 1., -1., 2.], 
 
       [ 2., 0., 0.], 
 
       [ 0., 1., -1.]]) 
 
min_max_scaler = preprocessing.MinMaxScaler() 
 
X_minMax = min_max_scaler.fit_transform(X)

此外,也可以通过NumPy直接计算:

X_std=(X-X.min(axis=0))/(X.max(axis=0)-X.min(axis=0)) 
X_minmax=X_std/(X.max(axis=0)-X.min(axis=0))+X.min(axis=0))

Z-Score标准化(均值归一化)

Z-Score标准化基于原始数据的均值和标准差进行标准化处理。经过变换后,数据符合标准正态分布,均值为0,标准差为1。这种方法适用于数据分布近似正态的情况,且对异常值相对敏感。

1. 数学原理

转换公式如下:

Z = (X - mu) / sigma

其中,mu为所有样本数据的均值,sigma为所有样本的标准差。

2. 代码实现

使用NumPy手动实现

import numpy as np
 
arr = np.asarray([0, 10, 50, 80, 100])
for x in arr:
  x = float(x - arr.mean())/arr.std()
  print x
 
# output
# -1.24101045599
# -0.982466610991
# 0.0517087689995
# 0.827340303992
# 1.34442799399

总结

Min-Max标准化和Z-Score标准化是数据预处理中两种基础且重要的方法。Min-Max适用于需要将数据限制在特定区间(如[0,1])的场景,而Z-Score适用于数据分布近似正态且希望消除量纲影响的场景。在实际应用中,应根据数据特性和模型需求选择合适的归一化方法。

以上就是Python数据归一化及三种方法详解的详细内容,更多关于Python数据预处理、MinMaxScaler和Z-Score标准化的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。