本节你会学到
- 说清楚「机器学习项目的完整流程:从原始数据到模型预测」解决的核心问题
- 知道它在「传统机器学习基础(21~34)」中的位置
- 把 机器学习、分类与回归、监督学习 这些关键词联系起来
一个机器学习项目不是从训练模型开始,而是从定义问题、整理数据、训练评估到上线预测的一整条链路。
学习路线:传统机器学习基础(21~34) · 第 21 课
补齐文本分类项目背后的数据处理、算法、评估和模型选择知识。
学完本阶段你能做到:拿到一份结构化表格数据,独立完成清洗、特征工程、建模、评估、模型选择和保存,并用规范流程比较多个算法。
推荐读法:建议系统读。做项目时遇到数据和模型选择问题,也可以按需回查。
查看完整阶段 · 14 篇先看目标,再带着问题读正文。读完后用练习确认自己真的理解了。
项目文要先说清数据流。输入通常是原始数据或上一步结果,输出必须能被下一步稳定复用。
优先排查预处理是否一致,例如分词、TF-IDF 词表、标签映射、标准化器是否沿用训练阶段的同一套对象。
因为真实项目还要看数据质量、错误样本、部署入口、复用方式和失败边界。
学完 AI、机器学习、训练集、指标和过拟合之后,下一步要把这些概念放进一个完整项目里。
很多初学者一上来就问:模型用什么?参数怎么调?准确率为什么不高?
但真正做机器学习项目时,模型只是中间的一环。一个项目能不能跑通,往往取决于你有没有把问题、数据、特征、评估和预测流程连起来。
机器学习项目的核心流程是:
定义问题 -> 收集数据 -> 清洗数据 -> 构造特征 -> 训练模型 -> 评估模型 -> 保存模型 -> 预测新样本
如果只看训练模型,就像只看做饭时“开火”的那一步。
开火当然重要,但食材有没有洗干净、调料有没有准备好、火候怎么判断、最后怎么装盘,这些都会影响结果。
项目开始前,先要把问题说清楚。
比如:
问题类型决定后面的很多选择:标签怎么准备、模型怎么选、指标怎么看、结果怎么解释。
如果任务定义不清楚,后面代码写得再顺,也可能是在解决一个错误的问题。
拿到数据以后,不要急着训练。
先看几个基本问题:
一个最基础的检查可以这样写:
import pandas as pd
df = pd.read_csv("data.csv")
print(df.head())
print(df.shape)
print(df.info())
print(df.describe())
print(df.isna().sum())
这些代码不是形式主义。它们是在帮你确认:数据是不是你以为的那个样子。
真实数据通常不会很干净。
常见问题包括:
清洗数据的目标不是把数据变得“好看”,而是让它能稳定地进入模型。
例如缺失值可以删除,也可以填充;重复样本可以去掉;异常值要结合业务判断,不能一看到离群点就机械删除。
模型不能直接理解业务语言,它只能处理数字特征。
所以我们要把原始数据变成模型能学习的形式。
表格数据里,可能需要:
文本分类里,可能需要:
这一步叫特征工程。
很多传统机器学习项目的效果差距,不在模型,而在特征。
训练前要把数据拆成训练集、验证集和测试集。
常见方式:
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
X,
y,
test_size=0.2,
random_state=42,
stratify=y,
)
训练集用来让模型学习,测试集用来最后评估。
如果是分类任务,stratify=y 可以尽量保持训练集和测试集的类别比例一致。
这能减少一个常见问题:训练集里某类很多,测试集里某类很少,最后评估结果不稳定。
当数据准备好以后,训练模型反而会变得很清楚。
以随机森林为例:
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(
n_estimators=100,
random_state=42,
)
model.fit(X_train, y_train)
这里 fit 的意思就是:让模型从训练数据里学习规律。
不同模型的内部原理不同,但从项目流程看,大多数模型都遵循类似接口:
fit:学习
predict:预测
score / metrics:评估
模型训练完,不代表项目完成。
我们要回答:模型到底好不好?
分类任务常看:
回归任务常看:
分类评估示例:
from sklearn.metrics import classification_report
y_pred = model.predict(X_test)
print(classification_report(y_test, y_pred))
不要只看准确率。
如果垃圾短信只占 5%,模型把所有短信都预测成“正常”,准确率也能有 95%,但这个模型没有真正解决问题。
项目最后要能复用。
如果每次预测都重新训练一次模型,流程就不完整。
常见做法是把模型和必要的预处理工具一起保存:
import joblib
joblib.dump(model, "model.pkl")
loaded_model = joblib.load("model.pkl")
result = loaded_model.predict(new_X)
如果用了 TF-IDF、标准化器、编码器,也要一起保存。
否则上线预测时,新数据的处理方式和训练时不一致,结果会非常不可靠。
机器学习项目不是一句 model.fit()。
它是一条完整链路:
问题 -> 数据 -> 清洗 -> 特征 -> 训练 -> 评估 -> 保存 -> 预测
这条主线建立起来以后,后面学习数据清洗、特征工程、线性回归、逻辑回归、KNN、决策树和随机森林,都会更有位置感。
下一课,我们先进入最容易被低估的一步:数据清洗。
留言讨论