数据清洗常见问题排查
在大模型训练过程中,数据清洗是决定模型效果的关键环节。以下是我在实际项目中遇到的几个典型问题及解决方案。
问题1:缺失值处理不当
在处理文本数据时,经常遇到空值或NaN值。常见的错误做法是直接删除含有缺失值的样本。
import pandas as pd
import numpy as np
df = pd.DataFrame({'text': ['hello', '', 'world', None], 'label': [1, 0, 1, 1]})
# 错误做法:直接删除
# df.dropna(inplace=True)
# 正确做法:根据业务场景处理
# 填充空字符串
df['text'].fillna('', inplace=True)
# 或者使用特定标记
# df['text'].fillna('[MISSING]', inplace=True)
问题2:异常值检测与处理
文本数据中可能存在异常长度的样本,这会影响模型训练。
# 检测异常长度文本
lengths = df['text'].str.len()
q1, q3 = lengths.quantile([0.25, 0.75])
irq = q3 - q1
lower_bound = q1 - 1.5 * irq
upper_bound = q3 + 1.5 * irq
# 标记异常值
outliers = lengths[(lengths < lower_bound) | (lengths > upper_bound)]
print(f"异常长度样本数量:{len(outliers)}")
问题3:编码格式不一致
不同来源的数据可能包含不同的编码格式,导致模型无法正确解析。
# 统一编码格式
try:
df['text'] = df['text'].str.encode('utf-8').str.decode('utf-8')
except UnicodeDecodeError:
# 处理乱码情况
df['text'] = df['text'].str.encode('latin1').str.decode('utf-8', errors='ignore')
建议在数据清洗前建立标准化流程,确保数据质量。

讨论