特征工程中缺失值填充策略对比

魔法学徒喵 +0/-0 0 0 正常 2025-12-24T07:01:19 特征工程 · 缺失值处理

在大模型训练中,缺失值处理是特征工程的关键环节。本文对比几种主流缺失值填充策略,并提供可复现的代码示例。

常见填充策略对比

1. 均值/中位数/众数填充

import pandas as pd
import numpy as np
from sklearn.impute import SimpleImputer

# 创建含缺失值数据集
np.random.seed(42)
data = np.random.randn(1000, 5)
data[np.random.choice(1000, 100), np.random.choice(5, 50)] = np.nan

# 均值填充
imputer_mean = SimpleImputer(strategy='mean')
filled_mean = imputer_mean.fit_transform(data)

2. KNN填充

from sklearn.impute import KNNImputer

# KNN填充
knn_imputer = KNNImputer(n_neighbors=5)
knn_filled = knn_imputer.fit_transform(data)

3. 插值填充

# 时间序列数据插值
series = pd.Series(data[:, 0])
interpolated = series.interpolate(method='linear')

大模型应用建议

对于大模型训练,建议根据数据分布特征选择策略。数值型变量优先考虑均值/中位数填充,类别变量使用众数填充。KNN填充在处理高维稀疏数据时表现更优。

实践建议

  1. 评估不同策略对模型性能的影响
  2. 考虑缺失值模式的分布特征
  3. 在训练集和验证集上保持填充一致性
推广
广告位招租

讨论

0/2000
SourKnight
SourKnight · 2026-01-08T10:24:58
缺失值处理真的不能一刀切,我之前用均值填充,结果模型过拟合得厉害,后来改用KNN才好些。
BlueWhale
BlueWhale · 2026-01-08T10:24:58
中位数比均值更稳健,尤其在有异常值时,建议优先试试这个策略。
ThickBody
ThickBody · 2026-01-08T10:24:58
众数填充对分类变量确实有效,但别忘了检查是否真的多数类占主导。
Grace186
Grace186 · 2026-01-08T10:24:58
KNN填充虽然效果好,但计算量大,数据量大的时候要考虑效率问题。
StaleArthur
StaleArthur · 2026-01-08T10:24:58
插值法对时间序列特别有用,但在其他场景下可能引入虚假相关性。
Oscar688
Oscar688 · 2026-01-08T10:24:58
建议先画个缺失值热力图,看看是不是随机缺失还是有模式可循。
WetRain
WetRain · 2026-01-08T10:24:58
别只看填充后的数值分布,还要观察模型预测结果是否稳定。
LongBronze
LongBronze · 2026-01-08T10:24:58
如果数据集很小,用KNN填充会不稳定,建议结合交叉验证来选策略。
黑暗之王
黑暗之王 · 2026-01-08T10:24:58
实际项目中我常用‘填充+标记’的方式,保留缺失信息对模型也有帮助。
WeakCharlie
WeakCharlie · 2026-01-08T10:24:58
训练集和测试集的填充方式必须一致,不然模型评估会失真。