Python数据预处理:掌握四种数据标准化方法

花开有时
花开有时
发布时间:2026-10-13| 1人浏览过
原创

本文介绍Python中数据标准化的四种核心方法:Max-Min归一化、Z-Score标准化、MaxAbs绝对值标准化及RobustScaler鲁棒标准化。通过Sklearn库实现,解析各方法适用场景,如稀疏数据与含离群点数据的处理,助力提升模型训练效果。

数据标准化定义

数据标准化定义

在正式进行数据分析前,通常需要对原始数据进行标准化(normalization)处理,以便基于处理后的数据开展后续分析。所谓数据标准化,即统计数据的指数化过程,主要包含数据同趋化处理与无量纲化处理两个维度。数据同趋化处理旨在解决不同性质指标间无法直接加总的问题,通过调整逆指标数据的性质,使所有指标对评估方案的作用力方向一致,从而得出准确的综合结果。数据无量纲化处理则主要解决不同数据间的可比性问题。

常见的标准化方法

常见的标准化方法

Max-Min归一化

Max-Min归一化

Min-Max标准化是对原始数据进行线性变换的方法。假设属性A的最小值为minA,最大值为maxA,将A的原始值x通过Min-Max标准化映射到区间[0,1]内的新值x',其计算公式为:

新数据 = (原数据 - 最小值) / (最大值 - 最小值)

该方法能将数据映射到特定区间内,且不会改变原始数据的结构分布。

Z-Score中心化标准化

Z-Score中心化标准化

Z-Score标准化基于原始数据的均值(mean)和标准差(standard deviation)进行变换,将属性A的原始值x标准化为x'。

当属性A的最大值和最小值未知,或数据中存在超出取值范围的离群点时,Z-Score标准化尤为适用。

新数据 = (原数据 - 均值) / 标准差

这是大多数数据类型适用的标准化方式,也是许多分析工具的默认选项。标准化后的数据服从均值为0、方差为1的正态分布。然而,Z-Score属于中心化方法,会改变原有数据的分布结构,因此不适用于稀疏数据的处理。

实际数据集中常存在稀疏特征,表现为标准差较小且大量元素值为0,例如协同过滤中常见的数据集,其绝大部分数据均为0。若对稀疏数据采用中心化标准化,会破坏其原有的稀疏结构,导致信息失真。

MaxAbs稀疏数据标准化

MaxAbs稀疏数据标准化

最大值绝对值标准化(MaxAbs)依据最大值的绝对值进行标准化。设原始转换数据为x,新数据为x',则x' = x / |max|,其中max为x所在列的最大值。

该方法生成的数据区间为[-1, 1],且保持原数据结构不变,因此同样适用于稀疏数据及稀疏矩阵的处理。

针对离群点的RobustScaler标准化

针对离群点的RobustScaler标准化

当数据集中存在离群点时,使用Z-Score标准化往往效果不佳,因为离群点在标准化后会丧失其极端特性。RobustScaler专门针对离群点进行标准化处理,该方法对数据中心化数据的缩放具有更强的参数控制能力和鲁棒性。

Python代码实现

Python代码实现


import numpy as np
import pandas as pd
from sklearn import preprocessing
import matplotlib.pyplot as plt
from sklearn.datasets import make_moons
import matplotlib.pyplot as plt
%matplotlib inline

# 导入数据
data = make_moons(n_samples=200, noise=10)[0]

#Z-Score标准化
#建立StandardScaler对象
zscore = preprocessing.StandardScaler()
# 标准化处理
data_zs = zscore.fit_transform(data)

#Max-Min标准化
#建立MinMaxScaler对象
minmax = preprocessing.MinMaxScaler()
# 标准化处理
data_minmax = minmax.fit_transform(data)

#MaxAbs标准化
#建立MinMaxScaler对象
maxabs = preprocessing.MaxAbsScaler()
# 标准化处理
data_maxabs = maxabs.fit_transform(data)

#RobustScaler标准化
#建立RobustScaler对象
robust = preprocessing.RobustScaler()
# 标准化处理
data_rob = robust.fit_transform(data)

# 可视化数据展示
# 建立数据集列表
data_list = [data, data_zs, data_minmax, data_maxabs, data_rob]
# 创建颜色列表
color_list = ['blue', 'red', 'green', 'black', 'pink']
# 创建标题样式
title_list = ['source data', 'zscore', 'minmax', 'maxabs', 'robust']

# 设置画幅
plt.figure(figsize=(9, 6))
# 循环数据集和索引
for i, dt in enumerate(data_list):
  # 子网格
  plt.subplot(2, 3, i+1)
  # 数据画散点图
  plt.scatter(dt[:, 0], dt[:, 1], c=color_list[i])
  # 设置标题
  plt.title(title_list[i])
# 图片储存 
plt.savefig('xx.png')
# 图片展示
plt.show()

参考书籍:《Python数据分析与数据化运营》作者:宋天龙

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

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

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 算法库。