🗄️ Stage 02 & 03 · 数据工程 + 预处理

数据是AI的燃料

数据工程 = 收集 → 清洗 → 标注 → 质检 → 划分。掌握这套流程,模型效果至少提升30%。

🔄 数据工程完整流水线

📥
STEP 1
数据收集
🧹
STEP 2
筛选清洗
🏷️
STEP 3
数据标注
STEP 4
质检纠错
✂️
STEP 5
划分构建

📥 Step 1:数据收集全方案

热门开源数据集平台一览

平台适用任务典型数据集特点
Kaggle全能30万+数据集社区活跃,有竞赛
HuggingFaceNLP/CVdatasets库集成一键加载,文档好
Papers with Code学术论文配套数据最新最权威
UCI Machine Learning表格经典小型数据集教学常用
COCO / ImageNetCV图像检测/分类行业标准
Common CrawlNLP互联网文本超大规模

🧹 Step 2:原始数据清洗

"垃圾进,垃圾出"——数据质量决定模型上限

🎯 交互式演练:清理一份脏数据

下面是一份带有问题的客户数据,请点击每个"问题行"查看清洗逻辑:

ID 姓名 年龄 手机号 注册日期 操作
001张三28138001380012024-01-15✓ 正常
002李四32139123456782024-02-20⚠️ 问题行
003王五-137987654322024-03-10⚠️ 问题行
004赵六-45136000011112024-04-05⚠️ 问题行
005钱七24123452024-05-12⚠️ 问题行
006孙八30135555566662024-06-18✓ 正常

📝 Pandas 清洗代码示例

import pandas as pd

df = pd.read_csv("raw_data.csv")

# 1. 去重
df = df.drop_duplicates(subset=["手机号"])

# 2. 缺失值处理(年龄用中位数填充)
df["年龄"] = pd.to_numeric(df["年龄"], errors="coerce")
df["年龄"] = df["年龄"].fillna(df["年龄"].median())

# 3. 异常值剔除(年龄0-120才合理)
df = df[(df["年龄"] > 0) & (df["年龄"] < 120)]

# 4. 手机号格式校验
df = df[df["手机号"].str.match(r"^1[3-9]\d{9}$")]

# 5. 保存清洗后数据
df.to_csv("cleaned_data.csv", index=False)

🏷️ Step 3:数据标注

标注是让数据"有意义"的关键步骤

📊

分类标注

给样本打类别标签(如:正面/负面/中性)

工具:Label Studio, Doccano
🎯

检测标注

在图像上画框(bbox)标注物体位置

工具:LabelImg, CVAT, Roboflow
🗺️

分割标注

像素级精确标注目标轮廓

工具:LabelMe, CVAT, Supervisely
📝

NLP标注

实体识别、关系抽取、意图标注

工具:Doccano, Label Studio, Prodigy

💰 标注成本估算器(交互式)

预估时间
-- 天
预估成本
-- 元
推荐方案
--

Step 4:质检纠错

标注完不代表数据可用,必须经过质量检查:

  • 抽样复核:每批抽 5-10% 人工检查
  • 多人交叉:同一样本让 2-3 人独立标注,取多数
  • 一致性检验:用 Kappa 系数衡量标注者一致性
  • 模型反查:先用初始模型训练,找预测错误集中的样本复查
  • 硬样本挖掘:模型混淆度高的样本优先人工复核
✂️

Step 5:训练/验证/测试集划分

训练集 70%
验证集 15%
测试集 15%
训练集(Train):模型真正用来学习的数据
验证集(Val):调参时用来评估效果,不能参与训练
测试集(Test):最终只用一次的"大考"数据,绝对不能调参时看
💡 划分原则:分层抽样(保持各类别比例一致)、随机打乱、k折交叉验证(数据少时)
← 返回需求定义