单元三

第12课 回归小项目:调特征看变化

任务场景:加减特征,观察指标怎样变
任务场景:加减特征,观察指标怎样变
原理图:用测试集 R² 比较不同特征方案
原理图:用测试集 R² 比较不同特征方案

一、任务目标

改变所用特征列数,观察测试 R² 如何变化。

二、核心概念讲清楚

项目不是堆代码,而是完整闭环:问题、数据、模型、分数、局限。诚实写出不足也算能力。

  • 明确预测目标
  • 报告测试集指标
  • 说明数据来源与局限
1选题预测什么数值
2准备数据清洗与划分
3训练评估记录 MSE/R²
4写结论能做什么、不能做什么

三、跟着想一遍(小例子)

用学习时长预测分数:给出测试 R²,并说明「样本少、仅供课堂演示」。

易错:只贴截图分数,不写清数据与步骤。

正确:别人按你的说明能复现关键结果。

想一想:为什么项目要写「局限」?(提示:避免过度承诺。)

四、解题思路

任务:改变所用特征列数,观察测试 R² 如何变化。 先想清楚:输入是什么、处理后得到什么、屏幕上应出现什么。

本课主要用到:屏幕输出。

  1. 1明确任务「改变所用特征列数,观察测试 R² 如何变化。」:运行后你希望看到什么结果(文字、图形或计算结果)。
  2. 2用 print 把结果说出来,确认屏幕上出现预期内容。
  3. 3对照参考代码跑通后,只改一个参数,观察结果如何变化。

流程示意(可对照左侧文字)

任务:改变所用特征列…用print把结果说出来,…对照参考代码跑通后,只改一…

五、语句功能讲解

本课用到的 Mixly 图形块均已在前面的课讲过。请直接对照编程练习搭积木;若有遗忘,回到该积木首次出现的课页复习。

六、知识点讲解

特征是从原始数据里抽出、对判断有用的量;标签是我们想预测的答案。分类就是根据特征给样本贴标签。特征选不好,后面模型再复杂也难做好。

先弄清本课输入与输出,再进编程练习对照现象。

七、编程练习

先理解上面的例子,再在下方 Mixly 运行与检查(含 scikit-learn)。

同一 random_state 对比 R2。

参考代码(对照抄写到下方 Mixly)
from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score

X, y = load_diabetes(return_X_y=True)
# 只用前 3 个特征
X3 = X[:, :3]
X_train, X_test, y_train, y_test = train_test_split(
    X3, y, test_size=0.2, random_state=0
)
model = LinearRegression().fit(X_train, y_train)
print("3特征 R2:", round(r2_score(y_test, model.predict(X_test)), 3))

# 换成全部特征再比一次
X_train2, X_test2, y_train2, y_test2 = train_test_split(
    X, y, test_size=0.2, random_state=0
)
model2 = LinearRegression().fit(X_train2, y_train2)
print("全特征 R2:", round(r2_score(y_test2, model2.predict(X_test2)), 3))

八、课堂练习

先完成两道正误判断,再做其余题目;选出后点「检查」。

  1. 判断:只抄参考代码,不看运行输出,也不改参数验证。

  2. 判断:先跑通,再对照「特征选择」改一处输入/参数,确认输出按预期变化;答错小测时读讲解。

  3. 调特征做对比时,更稳妥的是?

  4. load_diabetes 主要面向?

九、本节小结

回归单元收官:会拟合、会读指标、会做特征小实验。下一单元看无标签的聚类与规范化流程。