AI 学习之旅 · 阶段二:机器学习

🤖 阶段二:机器学习

第1课:机器学习是什么?

核心思想
复制代码
传统编程  →  人写规则,电脑执行
机器学习  →  电脑自己从数据中学习规则
生活中的机器学习
  • 垃圾邮件过滤
  • 抖音/小红书推荐算法
  • 语音助手(Siri、小爱同学)
  • 人脸识别
机器学习的三种类型
类型 说明 例子
监督学习 有"标准答案" 预测房价、识别猫狗
无监督学习 没有标准答案,自己找规律 用户分群、图片聚类
强化学习 通过奖励/惩罚学习 AlphaGo、游戏 AI
监督学习的两个主要任务
  • 分类:预测类别(这封邮件是垃圾邮件吗?)
  • 回归:预测数值(这套房子能卖多少钱?)

💡 核心比喻: 机器学习 = 拟合函数

你有一堆散点,机器学习帮你画一条最贴合这些点的曲线。 以后来一个新的 x,就能用这条曲线预测 y。

测验答案: B --- 用历史房价数据训练模型,预测新房价(有标准答案 = 监督学习)


第2课:第一个机器学习项目

用 sklearn 训练一个判断鸢尾花品种的模型。

完整代码

python

复制代码
# 1. 导入工具
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score

# 2. 加载数据
iris = load_iris()
X = iris.data          # 特征(花的大小数据)
y = iris.target        # 标签(品种编号:0,1,2)

# 3. 拆分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.3, random_state=42
)
# test_size=0.3 → 70%训练,30%测试

# 4. 选择模型并训练
model = KNeighborsClassifier(n_neighbors=3)
model.fit(X_train, y_train)   # 训练!

# 5. 预测并评估
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"模型准确率: {accuracy * 100:.1f}%")

# 6. 用自己的数据试试
new_flower = [[5.1, 3.5, 1.4, 0.2]]
prediction = model.predict(new_flower)
print(f"预测品种: {iris.target_names[prediction[0]]}")
代码解读
  • train_test_split:不能把所有数据都用来训练,要留一部分来"闭卷考试"
  • KNeighborsClassifier:看新数据周围最近的 3 个邻居是什么品种,少数服从多数
  • accuracy_score:模型说对了百分之多少
如何在 Google Colab 运行
  1. 打开 colab.research.google.com
  2. 新建笔记本
  3. 粘贴代码,按 Shift + Enter 运行

测验题目: train_test_split 的作用是什么?

  • A. 把数据按行拆成训练和测试两部分 ✅
  • B. 把数据按列拆成特征和标签
  • C. 用来训练模型的主体函数
  • D. 用来评估模型准确率的函数

第3课:过拟合与泛化 ⚠️

这是机器学习最重要的概念,理解了它你就超越了 80% 的初学者。

什么是过拟合?

生活比喻:

小明背下了所有练习题的答案,考试遇到新题就不会了 → 过拟合 小红理解了解题思路,遇到新题也能做对 → 泛化能力强

三种状态对比
状态 训练集表现 测试集表现 说明
欠拟合 模型太简单,没学会
刚好 理想状态 ✅
过拟合 极好(100%) 背下了训练数据 ⚠️
防止过拟合的 4 种方法
  1. 更多数据 --- 数据越多,模型越难"背答案"
  2. 正则化(Regularization) --- 给模型加约束,不让它太复杂
  3. 交叉验证 --- 多次拆分训练/测试集,确保模型稳定
  4. 早停(Early Stopping) --- 测试集误差开始上升时立即停止训练
判断口诀
复制代码
训练集误差 ↓  测试集误差 ↓   →  泛化能力强 ✅
训练集误差 ↓  测试集误差 ↑   →  过拟合!⚠️
训练集误差 ↑  测试集误差 ↑   →  欠拟合 ⚠️
代码示例:绘制学习曲线

python

复制代码
from sklearn.model_selection import learning_curve
import matplotlib.pyplot as plt

train_sizes, train_scores, val_scores = learning_curve(
    model, X, y, cv=5
)
# 两条曲线差距很大 → 过拟合
# 两条曲线都很高(误差大) → 欠拟合

测验答案: B --- 训练集准确率高但测试集准确率低,说明可能过拟合了