郭震 AI公众号:郭震AI

12 处理缺失值

发布日期:

最近更新:

分类: Scikit

预计阅读: 3 分钟

阅读次数: 0

系列进度

Scikit-learn 入门 · 第 12 / 24

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

整理说明

这篇内容怎么整理

郭震 · 2026-06-04

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

阅读路线

先按这条路线读

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

图文要点

先看本文图文节点

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

处理缺失值流程图查看大图
处理缺失值流程图

缺失值处理要看原因。随机缺失、系统缺失和业务上代表某种状态的缺失,处理方式不同。盲目填平均值可能掩盖问题。

插补工具可参考 scikit-learn imputation 文档

处理缺失值核对图查看大图
处理缺失值核对图

填补前我会先统计每列缺失比例,并抽样看原始记录。缺失比例很高的字段,不要急着塞进模型。

在数据科学和机器学习的过程中,数据的完整性至关重要。如果数据集中的特征存在缺失值,就需要进行相应的处理,以避免对模型训练和预测结果产生负面影响。接下来,我们将介绍如何在 Scikit-Learn 框架下处理缺失值,并结合实际案例进行演示。

为什么需要处理缺失值

缺失值可能会导致以下问题:

  1. 模型训练失败:许多机器学习算法无法处理缺失值,直接使用含有缺失值的数据集会导致程序报错。
  2. 模型性能下降:即便可以处理缺失值,缺失数据的存在也可能影响模型的泛化能力,导致预测性能的下降。
  3. 偏差引入:错误地处理缺失值可能会引入更多偏差,影响结果的可靠性。
缺失值处理判断卡查看大图
缺失值处理判断卡

处理缺失值时,先看缺失比例、字段类型、缺失原因、训练测试隔离和填补策略。

处理缺失值的方法

在 Scikit-Learn 中,处理缺失值的常见方法有:

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

读《处理缺失值》时,可以先看配图里的任务、概念、练习和判断点,再回到正文补细节。这样更容易判断这篇内容能放到哪个真实场景里。

  1. 删除缺失值
  2. 插补缺失值
  3. 使用专门的算法处理缺失值

删除缺失值

当数据集中的缺失值占比很小或不重要时,可以选择直接删除相应的行或列。但这不是一个推荐的普遍做法,因为会损失信息。

import pandas as pd

# 创建一个示例数据集
data = {
    'A': [1, 2, None, 4],
    'B': [None, 5, 6, 7],
    'C': [8, 9, 10, None]
}
df = pd.DataFrame(data)

# 删除含有缺失值的行
df_cleaned = df.dropna()

print(df_cleaned)

插补缺失值

插补缺失值是另一种常见的方法,最常用的插补方式是使用特征的平均值、中位数或众数,或者使用 KNN(K-近邻算法)和其他模型。

使用均值填充

from sklearn.impute import SimpleImputer

# 创建插补器
imputer = SimpleImputer(strategy='mean')

# 对数据进行插补
df['A'] = imputer.fit_transform(df[['A']])
df['B'] = imputer.fit_transform(df[['B']])
df['C'] = imputer.fit_transform(df[['C']])

print(df)

使用中位数填充

# 修改插补策略为中位数
imputer = SimpleImputer(strategy='median')
df['C'] = imputer.fit_transform(df[['C']])

print(df)

KNN 插补

使用 KNN 插补是一种基于特征相似度的插补方法,可以很好地保留数据内在结构。

from sklearn.impute import KNNImputer

# 创建 KNN 插补器
knn_imputer = KNNImputer(n_neighbors=2)
df_knn = pd.DataFrame(knn_imputer.fit_transform(df), columns=df.columns)

print(df_knn)

这种方法在插补值时考虑了其他特征,有助于提供更加精确的估计。

处理缺失值应用复盘卡查看大图
处理缺失值应用复盘卡

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

处理缺失值应用检查卡查看大图
处理缺失值应用检查卡

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

小结

在本章节中,我们介绍了如何使用 Scikit-Learn 处理缺失值,包括删除缺失值、使用均值、中位数插补和 KNN 插补等常用方法。选择合适的缺失值处理方法对后续的模型选择和训练至关重要。在下一篇中,我们将进入模型选择的阶段,具体分析回归模型的应用和选择策略,期待与您继续深入探讨这一主题。

继续阅读

从这篇继续找到相关教程

AI 教程总索引

常见问题

读前先确认这三点

处理缺失值适合谁读?

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

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

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

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

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

分享文章

转发到常用平台

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

相关教程

AI 教程总索引

继续阅读

继续找到相关 AI 教程

返回栏目

Reader Messages

读者留言

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

最多 800 字

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

0/800

留言列表

0
正在加载留言...