郭震 AI公众号:郭震AI

8 数据集处理之数据预处理

发布日期:

最近更新:

分类: Scikit

预计阅读: 4 分钟

阅读次数: 0

预计阅读4 分钟
结构重点12 个
图文要点6 张
正文规模1.4k 字

整理说明

这篇内容怎么整理

郭震 · 2026-06-04

独立整理围绕 12 个结构重点拆成环境、步骤、验证点和常见误区,尽量让读者能照着复现。
图文对照保留 6 张和配置、流程、判断结果有关的图片,方便快速定位正文重点。
持续校对工具、模型和命令变化较快,后续优先修正入口、参数和风险提醒。

阅读路线

先按这条路线读

先抓住主线,再回到代码、配置和图文细节,读起来会更稳。

图文要点

先看本文图文节点

按图先建立主线,再跳回正文核对步骤、配置和判断标准。

数据预处理流程图查看大图
数据预处理流程图

预处理规则会影响模型效果,也会影响上线后的稳定性。最重要的是避免先用全量数据处理,再去划分训练测试,这会造成信息泄露。

预处理方法可对照 scikit-learn preprocessing 文档

数据预处理核对图查看大图
数据预处理核对图

我会把缺失值处理、编码和缩放放进 Pipeline,而不是散落在 notebook 的不同单元里。流程清楚,复现实验才可靠。

在数据科学和机器学习的项目中,数据预处理是一个关键的步骤,对模型的性能有着至关重要的影响。在上一篇中,我们讨论了如何加载数据集,现在我们将重点关注如何对数据进行预处理,以确保数据适合模型训练和预测。

1. 什么是数据预处理?

数据预处理是清洗和转化原始数据的过程,使其适合于机器学习模型。这个步骤通常包括:

  • 处理缺失值
  • 特征编码
  • 特征缩放
  • 特征选择

2. 处理缺失值

缺失值在数据集中是一个常见的问题,可能会导致模型的性能下降。我们可以使用Scikit-Learn提供的方法处理缺失值。

2.1 删除缺失值

如果缺失值的数量相对较小,可以选择删除包含缺失值的样本。使用pandasdropna方法可以方便地实现:

import pandas as pd

# 假设我们已加载数据集并命名为df
df_cleaned = df.dropna()

2.2 填充缺失值

对于较大的数据集,删除缺失值可能会导致信息损失,因此可以使用填充的方法。SimpleImputer是Scikit-Learn中用于填充缺失值的类。我们可以选择不同的填充策略,比如均值、中位数或最频繁值。

from sklearn.impute import SimpleImputer

# 创建简单填充器,使用均值填充
imputer = SimpleImputer(strategy='mean')

# 填充缺失值
df[['feature1', 'feature2']] = imputer.fit_transform(df[['feature1', 'feature2']])

3. 特征编码

如果数据集中包含分类特征,模型需要将这些特征转换为数字格式。Scikit-Learn提供了一些工具来实现特征编码。

3.1 独热编码

独热编码(One-Hot Encoding)是转换分类特征的一种常用方法。使用OneHotEncoder可以轻松实现:

from sklearn.preprocessing import OneHotEncoder

encoder = OneHotEncoder(sparse=False)
encoded_features = encoder.fit_transform(df[['categorical_feature']])

# 将独热编码的特征添加回数据集中
df_encoded = pd.DataFrame(encoded_features, columns=encoder.get_feature_names_out())
df = pd.concat([df.drop('categorical_feature', axis=1), df_encoded], axis=1)

3.2 标签编码

对于有序分类特征,可以使用标签编码(Label Encoding)。可以使用LabelEncoder进行处理:

Scikit-Learn数据预处理判断卡查看大图
ScikitLearn数据预处理判断卡

使用 Scikit-Learn 做数据预处理时,先确认缺失处理、类别编码、数值缩放和训练测试隔离。

from sklearn.preprocessing import LabelEncoder

label_encoder = LabelEncoder()
df['ordinal_feature'] = label_encoder.fit_transform(df['ordinal_feature'])

4. 特征缩放

为了加速模型学习和提高模型的性能,特征缩放是一个必不可少的步骤。在Scikit-Learn中,我们可以使用StandardScalerMinMaxScaler来进行特征缩放。

4.1 标准化

标准化(Standardization)是将数据转换为均值为0,标准差为1的分布:

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
df[['feature1', 'feature2']] = scaler.fit_transform(df[['feature1', 'feature2']])

4.2 归一化

归一化(Normalization)则是将数据缩放到[0, 1]区间:

Scikit-Learn阅读地图卡查看大图
ScikitLearn阅读地图卡

看《数据集处理之数据预处理》时,先把图中的问题、关键词、操作和验收标准对上,再读正文会更省力。读完后,最好能用自己的项目重新讲一遍。

from sklearn.preprocessing import MinMaxScaler

min_max_scaler = MinMaxScaler()
df[['feature1', 'feature2']] = min_max_scaler.fit_transform(df[['feature1', 'feature2']])

5. 特征选择

特征选择是通过选择最有意义的特征来提高模型性能的方法。Scikit-Learn提供了一些工具来执行特征选择,如SelectKBest

from sklearn.feature_selection import SelectKBest, f_classif

X = df.drop('target', axis=1)
y = df['target']

# 选择K个最佳特征
selector = SelectKBest(score_func=f_classif, k=10)
X_selected = selector.fit_transform(X, y)
数据集处理之数据预处理应用复盘卡查看大图
数据集处理之数据预处理应用复盘卡

读到这里,可以把《数据集处理之数据预处理》整理成一张复盘表:先说清主线,再拿一个小任务检查结果。

数据集处理之数据预处理应用检查卡查看大图
数据集处理之数据预处理应用检查卡

读完《数据集处理之数据预处理》后,可以先挑一个小样例走完整流程,再判断哪些步骤已经能独立完成。

总结

数据预处理是机器学习流程中不可或缺的一部分。在这一部分中,我们介绍了缺失值处理、特征编码、特征缩放和特征选择等重要技术。在进行模型训练之前,确保对数据进行了充分的预处理是至关重要的。

接下来,在我们的系列教程中,我们将讨论如何对数据进行分割,以准备训练和测试模型。

继续阅读

从这篇继续找到相关教程

AI 教程总索引

常见问题

读前先确认这三点

数据集处理之数据预处理适合谁读?

这是 Scikit-learn 入门 系列第 8 / 24 篇,适合正在学习Scikit-learn 入门,并且需要把概念落到操作步骤或判断标准里的读者。

读这篇Scikit-learn 入门教程要多久?

按中文技术文章阅读速度估算,通读大约 4 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。

这篇文章里的图文节点怎么用?

正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。

分享文章

转发到常用平台

微信/朋友圈可先复制链接

相关教程

AI 教程总索引

继续阅读

继续找到相关 AI 教程

返回栏目

Reader Messages

读者留言

有问题、补充资料或实测结果,可以直接留下。这里不需要登录。

最多 800 字

为了防刷,每条留言会做长度、链接数量和提交频率限制。

0/800

留言列表

0
正在加载留言...