数据工程 = 收集 → 质检与初筛 → 数据标注。数据质量决定模型上限,上游每省1小时,下游省10倍时间。
从原始数据到可标注数据集——"及格线检查",深度清洗和标准化在下游预处理完成
数据收集是整个流水线的起点——没有好数据,再好的模型也白搭。核心问题:从哪来?够不够?合不合法?
# 最简爬虫示例
import requests
from bs4 import BeautifulSoup
resp = requests.get("https://example.com")
soup = BeautifulSoup(resp.text, "html.parser")
items = soup.select(".product") # CSS 选择器
# SMOTE 合成少数类样本 from imblearn.over_sampling import SMOTE smote = SMOTE(random_state=42) X_new, y_new = smote.fit_resample(X, y)
数据工程环节的质检与初筛:去重、补缺、剔除坏样本、格式核验——深度标准化、特征工程、数据集划分等在下游数据预处理阶段完成
下面是一份带有问题的客户数据,请点击每个"问题行"查看清洗逻辑:
| 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)标注物体位置
像素级精确标注目标轮廓
实体识别、关系抽取、意图标注