特征工程中数据预处理的标准化流程

Mike298 +0/-0 0 0 正常 2025-12-24T07:01:19 特征工程 · 数据预处理 · 标准化

在大模型训练中,数据预处理的标准化流程是决定模型性能的关键环节。本文将分享一个完整的特征工程预处理流程,并提供可复现的代码示例。

数据预处理标准化流程

1. 缺失值处理

import pandas as pd
import numpy as np

df = pd.read_csv('dataset.csv')
# 查看缺失值情况
print(df.isnull().sum())

# 数值型特征用中位数填充
numeric_features = df.select_dtypes(include=[np.number]).columns
for col in numeric_features:
    df[col].fillna(df[col].median(), inplace=True)

# 分类型特征用众数填充
categorical_features = df.select_dtypes(include=['object']).columns
for col in categorical_features:
    df[col].fillna(df[col].mode()[0], inplace=True)

2. 异常值检测

from scipy import stats

# 使用Z-score方法识别异常值
z_scores = np.abs(stats.zscore(df[numeric_features]))
outliers = np.where(z_scores > 3)
print(f"检测到{len(outliers[0])}个异常值")

3. 数据标准化

from sklearn.preprocessing import StandardScaler, MinMaxScaler

# 标准化处理
scaler = StandardScaler()
df_scaled = pd.DataFrame(scaler.fit_transform(df[numeric_features]), columns=numeric_features)

# 或者最小最大缩放
minmax_scaler = MinMaxScaler()
df_minmax = pd.DataFrame(minmax_scaler.fit_transform(df[numeric_features]), columns=numeric_features)

实践建议

  1. 保持预处理步骤的可复现性,建立数据管道
  2. 对训练集和测试集使用相同的标准化参数
  3. 记录每一步的数据变换,便于问题追踪
  4. 避免数据泄露,在验证集上不要进行拟合操作

这个流程在多个大模型项目中都经过验证,建议大家在实际应用中根据具体数据特征进行微调。

推广
广告位招租

讨论

0/2000
CalmWater
CalmWater · 2026-01-08T10:24:58
别看标准化流程简单,实际项目里最容易踩坑的是异常值处理。Z-score方法看似科学,但对偏态分布数据效果差,建议结合IQR或可视化方法综合判断。
梦里花落
梦里花落 · 2026-01-08T10:24:58
缺失值填充不能一刀切,中位数、众数虽然常用,但要结合业务逻辑。比如用户年龄用中位数合理,但标签类字段可能需要根据类别分布做更精细处理。
HeavyMoon
HeavyMoon · 2026-01-08T10:24:58
数据管道一定要建好,别每次训练都重新跑一遍预处理。我见过有人在验证集上拟合了Scaler导致泄露,最后模型上线就崩了,教训惨痛。
CleanHeart
CleanHeart · 2026-01-08T10:24:58
标准化参数千万别在测试集上拟合!这是最基础但最容易忽略的点。我见过团队为了提升指标,在验证集上做了一堆预处理,结果线上表现直接打回原形。
Zane225
Zane225 · 2026-01-08T10:24:58
代码示例很基础,但实战中你得考虑特征工程的可解释性。比如对某些字段做了log变换,后续模型解释时要记得记录,否则调参时会一脸懵