数据工程 = 收集 → 清洗 → 标注 → 质检 → 划分。掌握这套流程,模型效果至少提升30%。
| 平台 | 适用任务 | 典型数据集 | 特点 |
|---|---|---|---|
| Kaggle | 全能 | 30万+数据集 | 社区活跃,有竞赛 |
| HuggingFace | NLP/CV | datasets库集成 | 一键加载,文档好 |
| Papers with Code | 学术 | 论文配套数据 | 最新最权威 |
| UCI Machine Learning | 表格 | 经典小型数据集 | 教学常用 |
| COCO / ImageNet | CV | 图像检测/分类 | 行业标准 |
| Common Crawl | NLP | 互联网文本 | 超大规模 |
"垃圾进,垃圾出"——数据质量决定模型上限
下面是一份带有问题的客户数据,请点击每个"问题行"查看清洗逻辑:
| ID | 姓名 | 年龄 | 手机号 | 注册日期 | 操作 |
|---|---|---|---|---|---|
| 001 | 张三 | 28 | 13800138001 | 2024-01-15 | ✓ 正常 |
| 002 | 李四 | 32 | 13912345678 | 2024-02-20 | ⚠️ 问题行 |
| 003 | 王五 | - | 13798765432 | 2024-03-10 | ⚠️ 问题行 |
| 004 | 赵六 | -45 | 13600001111 | 2024-04-05 | ⚠️ 问题行 |
| 005 | 钱七 | 24 | 12345 | 2024-05-12 | ⚠️ 问题行 |
| 006 | 孙八 | 30 | 13555556666 | 2024-06-18 | ✓ 正常 |
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)
标注是让数据"有意义"的关键步骤
给样本打类别标签(如:正面/负面/中性)
在图像上画框(bbox)标注物体位置
像素级精确标注目标轮廓
实体识别、关系抽取、意图标注
标注完不代表数据可用,必须经过质量检查: