使用 Sklearn 进行数据预处理(使用标准和极小极大缩放器)

machine learningmatplotlibseaborn更新于 2026/1/4 9:52:17

简介

数据预处理是生成可靠分析结果的必要步骤。数据准备工作包括消除重复数据、识别和修复异常值、标准化测量值以及归档信息类别。基于 Python 的 Sklearn 工具包因其缩放特征、处理缺失数据和编码分类变量的能力而广受欢迎,是数据预处理的重要资源。使用 Sklearn,数据预处理变得轻而易举,并且您可以访问可靠的方法进行有效的数据分析。

数据预处理技术

标准缩放

可以使用标准缩放对数据进行转换,使其围绕零和一呈正态分布。它确保所有数据的大小均匀。这可以防止机器学习算法赋予单个特征过高的权重。 Sklearn 的 StandardScaler 类可用于此目的。

标准缩放,也称为 z 分数归一化,是一种通过取标准差除以平均值来对数据进行归一化的方法。当标准差为 1 时,此变换会将数据的中间值置于零附近。这使得它非常适合那些关注特征大小的算法。

为什么使用标准缩放?

当特征具有不同的测量单位或值彼此差异很大时,标准缩放非常有用。它可以帮助梯度下降等算法更接近真实情况,并在模型决策中保持每个特征的权重。

标准缩放比例如何运作?

标准缩放比例的公式为 − z = (x - 平均值) / 标准差,其中 x 是原始数字,平均值是特征的平均值,标准差是衡量数据点间距的指标。

使用 Sklearn 设置标准缩放比例

Sklearn 有一个名为 StandardScaler 的类,可以轻松用于数据集。它将缩放比例器与训练数据进行拟合,然后同时修改训练数据和测试数据,使所有内容保持一致。

"最小-最大缩放比例"是什么意思?

最小-最大缩放比例使用特征的最小值和最大值来更改数据的大小。它会改变数据,使其适合 0 到 1 的范围,同时保持数据点之间的联系以及分布的形状。

为什么使用最小-最大缩放?

当设计的不同部分具有不同的范围或测量单位时,最小-最大缩放非常有用。它将特征放在相同的大小上,以便在机器学习训练期间,某个特征不会比其他特征更突出。

最小-最大缩放方法如何工作?

最小-最大缩放的公式为:x_scaled = (x - min) / (max - min),其中 x 是原始值,min 是特征的最小值,max 是特征的最大值。

使用 Sklearn 实现最小-最大缩放

最小-最大缩放由 Sklearn 中的 MinMaxScaler 类完成。它从训练数据中找出最小值和最大值,然后对训练集和测试集进行评分以匹配结果。

使用 Sklearn 进行数据预处理工作流程

加载和探索数据集

在本部分中,我们将讨论如何使用 Sklearn 库加载数据集,并进行一些基本探索以了解数据的组织方式。我们将使用 Sklearn 中的正确方法,以兼容数据预处理技术的格式加载数据。

代码

from sklearn.datasets import load_dataset

# 加载数据集
data = load_dataset('dataset_name')

# 探索数据集
print(data.head())
print(data.shape)
print(data.info())

处理缺失数据

处理丢失的数据是数据预处理中非常重要的一部分。我们将讨论 Sklearn 处理缺失数据的一些方法,例如使用平均值、中位数或众数进行估计。

代码

from sklearn.impute import SimpleImputer

# 创建一个 SimpleImputer 对象
imputer = SimpleImputer(strategy='mean')

# 在数据集上对 imputer 进行拟合和转换
data['column_with_missing_values'] = imputer.fit_transform(data['column_with_missing_values'])

处理分类变量(如适用)

处理分类数据时,我们需要将其转换为数值版本,以便机器学习模型可以使用它。 Sklearn 提供了使用独热编码和标签编码对分类值进行编码的工具。

独热编码代码示例

from sklearn.preprocessing import OneHotEncoder

# 创建 OneHotEncoder 对象
encoder = OneHotEncoder()

# 在数据集上拟合并变换编码器
data_encoded = encoder.fit_transform(data[['categorical_column']])

将数据集拆分为训练集和测试集

为了了解机器学习模型的效果,需要将信息拆分为训练集和测试集。 Sklearn 具有易于拆分的功能。

代码

from sklearn.model_selection import train_test_split

# 将数据集拆分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(data[['feature1', 'feature2']], data['target'], test_size=0.2, random_state=42)

应用数据缩放技术

标准缩放

标准缩放,也称为 z 分数归一化,会改变数据的大小,使平均值变为 0,标准差变为 1。这可以防止较大尺度的特征影响模型。

代码

from sklearn.preprocessing import StandardScaler

# 创建 StandardScaler 对象
scaler = StandardScaler()

# 在训练数据上拟合并变换缩放器
X_train_scaled = scaler.fit_transform(X_train)

# 使用相同的缩放器变换测试数据
X_test_scaled = scaler.transform(X_test)

最小-最大缩放

最小-最大缩放会改变数据的大小,使其适合某个区间,通常为 [0, 1]。当某些特征的数值不在标准范围内时,这种方法很有帮助。

代码

from sklearn.preprocessing import MinMaxScaler

# 创建 MinMaxScaler 对象
scaler = MinMaxScaler()

# 在训练数据上拟合并变换缩放器
X_train_scaled = scaler.fit_transform(X_train)

# 使用相同的缩放器变换测试数据
X_test_scaled = scaler.transform(X_test)

评估预处理数据

这里,我们快速讨论一下在将已处理的数据用于机器学习模型之前对其进行评估的重要性。我们可以看到特征是如何分布的,检查是否有缺失的数字,并弄清楚缩放对数据的影响。

可视化代码示例(使用 matplotlib 或 seaborn)

import matplotlib.pyplot as plt

# 可视化缩放前后的特征分布
plt.hist(X_train['feature1'], bins=20, label='Before Scaling')
plt.hist(X_train_scaled[:, 0], bins=20, label='After Scaling')
plt.xlabel('Feature 1')
plt.ylabel('Count')
plt.legend()
plt.show()

结论

总之,数据预处理是准备用于研究的数据的一个非常重要的部分。标准缩放和最小-最大缩放是两种常见的数据标准化方法,Sklearn 提供了两种实用工具。标准缩放会改变数据,使平均值为 0,标准差为 1。而最小-最大缩放则会改变数据,使其符合特定范围。使用这些方法,我们可以确保数据格式良好,便于进一步研究。这将使我们的模型更加准确可靠。