12 处理缺失值
系列进度
Scikit-learn 入门 · 第 12 / 24 篇
整理说明
这篇内容怎么整理
郭震 · 2026-06-04
阅读路线
先按这条路线读
先抓住主线,再回到代码、配置和图文细节,读起来会更稳。
缺失值处理要看原因。随机缺失、系统缺失和业务上代表某种状态的缺失,处理方式不同。盲目填平均值可能掩盖问题。
插补工具可参考 scikit-learn imputation 文档。
填补前我会先统计每列缺失比例,并抽样看原始记录。缺失比例很高的字段,不要急着塞进模型。
在数据科学和机器学习的过程中,数据的完整性至关重要。如果数据集中的特征存在缺失值,就需要进行相应的处理,以避免对模型训练和预测结果产生负面影响。接下来,我们将介绍如何在 Scikit-Learn 框架下处理缺失值,并结合实际案例进行演示。
为什么需要处理缺失值
缺失值可能会导致以下问题:
- 模型训练失败:许多机器学习算法无法处理缺失值,直接使用含有缺失值的数据集会导致程序报错。
- 模型性能下降:即便可以处理缺失值,缺失数据的存在也可能影响模型的泛化能力,导致预测性能的下降。
- 偏差引入:错误地处理缺失值可能会引入更多偏差,影响结果的可靠性。
处理缺失值时,先看缺失比例、字段类型、缺失原因、训练测试隔离和填补策略。
处理缺失值的方法
在 Scikit-Learn 中,处理缺失值的常见方法有:
读《处理缺失值》时,可以先看配图里的任务、概念、练习和判断点,再回到正文补细节。这样更容易判断这篇内容能放到哪个真实场景里。
- 删除缺失值
- 插补缺失值
- 使用专门的算法处理缺失值
删除缺失值
当数据集中的缺失值占比很小或不重要时,可以选择直接删除相应的行或列。但这不是一个推荐的普遍做法,因为会损失信息。
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 插补等常用方法。选择合适的缺失值处理方法对后续的模型选择和训练至关重要。在下一篇中,我们将进入模型选择的阶段,具体分析回归模型的应用和选择策略,期待与您继续深入探讨这一主题。
继续阅读
从这篇继续找到相关教程
常见问题
读前先确认这三点
处理缺失值适合谁读?
这是 Scikit-learn 入门 系列第 12 / 24 篇,适合正在学习Scikit-learn 入门,并且需要把概念落到操作步骤或判断标准里的读者。
读这篇Scikit-learn 入门教程要多久?
按中文技术文章阅读速度估算,通读大约 3 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。
这篇文章里的图文节点怎么用?
正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
继续阅读