ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

用 Scikit-learn 构建多目标回归模型:ML-For-Beginners 课程 Linnerud 数据集作业实战解析

用 Scikit-learn 构建多目标回归模型:ML-For-Beginners 课程 Linnerud 数据集作业实战解析 用 Scikit-learn 构建多目标回归模型ML-For-Beginners 课程 Linnerud 数据集作业实战解析【免费下载链接】ML-For-Beginners12 weeks, 26 lessons, 52 quizzes, classic Machine Learning for all项目地址: https://gitcode.com/GitHub_Trending/ml/ML-For-Beginners导读本篇技术指南以 ML-For-Beginners 课程《2-Regression/1-Tools》的课后作业为骨架围绕 scikit-learn 内置的Linnerud 多目标数据集完整讲解如何为一个数据集构建回归模型、并用文字描述变量间关系的全过程。你将掌握Linnerud 数据集的结构与变量语义、基于LinearRegression的端到端建模流程加载数据 → 特征选择 → 数据划分 → 训练 → 预测 → 可视化以及面对多个目标变量时的逐对建模与多输出回归两种策略从而高质量完成该作业。作业背景它属于哪一课需要哪些前置能力本作业位于课程 2-Regression/1-ToolsGet started with Python and Scikit-learn for regression models的末尾是用 Python 与 Scikit-learn 构建回归模型四课系列的第一课作业。该课要求学习者在动手前先完成以下环境准备安装 Python并推荐在[虚拟环境]中工作安装 Visual Studio Code并配置 Python 开发环境安装 Scikit-learn安装 Jupyter Notebook学会使用.ipynb交互式笔记本notebook 允许在代码块之间穿插 Markdown 说明非常适合实验型、研究型任务。在本课的主体练习中学习者使用内置的糖尿病数据集442 个样本、10 个特征走完了完整的线性回归流程导入matplotlib、numpy与sklearn的datasets、linear_model、model_selection模块加载数据、选定单一特征、划分训练/测试集、调用model.fit()训练、model.predict()预测并绘制散点图与回归线。该练习的完整可运行代码保存在 solution/notebook.ipynb另有使用 tidymodels 框架的 R 语言版本教程。本次作业正是要求把同样的建模思路迁移到一个结构不同——多目标——的数据集上并用文字把思路描述清楚。回归系列课程的 sketchnote 总览帮助理解线性回归在整个机器学习课程中的位置。Linnerud 数据集一个经典的多目标Multi-output回归样本作业要求的第一步是查看 scikit-learn 中的 Linnerud 数据集。按 scikit-learn 官方文档对该数据集的描述它由三个运动exercise变量作为数据三个生理physiological变量作为目标变量数据来自健身俱乐部中二十名中年男性。这 20 个样本、33 的变量结构使它成为一个典型的多目标回归multi-output regression练习样本——即每一个样本行同时对应多个需要预测的数值目标而不是像糖尿病数据集那样只有一个y。从 scikit-learn 数据加载器的结构看三个运动变量分别对应引体向上Chins、仰卧起坐Situps与跳跃Jumps三个生理变量分别对应体重Weight、腰围Waist与脉搏Pulse。作业中点名的腰围waistline正是三个生理目标之一仰卧起坐situps正是三个运动特征之一。这个数据集之所以适合作为回归入门作业原因有三样本量小、维度低20 行 × 3 特征肉眼即可观察便于逐点理解回归的几何含义变量语义清晰运动量数据与生理指标目标之间的关联方向符合常识便于在建模后做领域层面的解读多目标结构迫使学习者思考一个数据集有多个 y 时该怎么办为后续进阶的多输出建模打下认知基础。注意20 个样本属于极小的数据集训练出的模型泛化能力有限。作业目的是理解建模流程与变量关系而不是追求生产级精度——这一点应在描述性段落中有所体现。作业要求逐条解读作业德语版原文见英文版包含两项核心任务任务一用自己的话in your own words描述如何创建一个回归模型用于刻画**腰围Taillenumfang / waistline与仰卧起坐次数Anzahl der durchgeführten Sit-ups / situps**之间的关系。任务二对数据集中的其他数据点即其余的运动变量与生理变量组合重复同样的建模思路。评分标准Rubric如下表标准典范Vorbildlich适当Angemessen需改进Verbesserungswürdig提交一段描述性文字提交一段写得好的段落提交几句话未提供任何描述可见作业的评分重心在于文字描述的完整性、条理与深度——代码只是辅助关键是能否把如何建模讲清楚。下面给出从建模流程到文字组织的完整攻略。完整建模思路从腰围 vs 仰卧起坐开始把本课糖尿病数据集练习的流程见 solution/notebook.ipynb迁移到 Linnerud 数据集可以拆解为五个步骤。每一步既是可运行的代码也是描述段落中可以对应的讲解点。第一步加载数据集并观察结构import numpy as np import matplotlib.pyplot as plt from sklearn import datasets, linear_model, model_selection # 加载 Linnerud 数据集X 为三个运动变量y 为三个生理变量 X, y datasets.load_linnerud(return_X_yTrue) print(运动变量数据形状:, X.shape) # (20, 3) print(生理变量目标形状:, y.shape) # (20, 3)return_X_yTrue表示把数据以X数据矩阵和y回归目标两个数组返回这与本课糖尿病练习中datasets.load_diabetes(return_X_yTrue)的用法一致。打印形状可以确认Linnerud 是 20 个样本、3 个特征、3 个目标的数据集。第二步选定单一特征并转为二维数组作业聚焦腰围与仰卧起坐这对关系。在健身语境下通常把运动量仰卧起坐次数作为特征 X生理指标腰围作为目标 y——即用做了多少个仰卧起坐来解释或预测腰围。参照本课练习中选取第 3 列特征并用reshape转为 2D 数组的做法源码见 solution/notebook.ipynb# 选取仰卧起坐列作为特征、腰围列作为目标 # 按特征/目标列表的列顺序定位Situps 在第 2 列Waist 在第 2 列 situps X[:, 1].reshape((-1, 1)) # 转为 (20, 1) 的二维数组 waist y[:, 1]这里reshape((-1, 1))是关键sklearn的估计器要求特征矩阵是二维的样本 × 特征当只选一个特征时必须显式整形其中-1表示该维度由 numpy 自动推算本例即样本数 20。第三步划分训练集与测试集监督学习必须把数据划分为训练集与留出的测试集前者用于拟合模型后者用于检验模型的泛化表现。使用model_selection.train_test_splitX_train, X_test, y_train, y_test model_selection.train_test_split( situps, waist, test_size0.33 )test_size0.33表示约 33% 的数据约 7 个样本作为测试集其余用于训练——与本课糖尿病练习保持一致。由于样本只有 20 个可考虑适当调大训练比例或使用交叉验证这可以作为描述段落中对模型稳健性的思考加分点。第四步训练线性回归模型model linear_model.LinearRegression() model.fit(X_train, y_train)model.fit()是几乎贯穿所有主流机器学习库如 TensorFlow的统一接口模型根据训练数据学习出最佳拟合直线的系数斜率与截距使预测值与实际值之间的整体误差最小。在本课 R 版教程lesson_1.Rmd中对应的 tidymodels 写法是lm_spec %% fit(y ~ ., data diabetes_train)其模型输出同样展示学习到的回归系数——二者的原理完全一致。第五步预测并可视化y_pred model.predict(X_test) plt.scatter(X_test, y_test, colorblack) plt.plot(X_test, y_pred, colorblue, linewidth3) plt.xlabel(Situps (count)) plt.ylabel(Waistline) plt.title(Waistline vs Situps) plt.show()用测试集的特征做预测把真实点黑色散点与模型预测线蓝色直线画在同一张图上即可直观判断线性关系是否成立、哪些样本偏离较远。本课糖尿病练习的可视化结果正是这种形式本课糖尿病数据集练习的可视化结果展示了真实散点 回归直线的标准呈现方式可迁移到 Linnerud 的腰围 vs 仰卧起坐图。扩展到其他数据点多目标回归的两条路线作业任务二要求对数据集中的其他数据点做同样处理。Linnerud 的 3 个运动变量Chins、Situps、Jumps与 3 个生理目标Weight、Waist、Pulse可组成多对关系。处理方式有两种思路路线 A逐对建模简单、直观适合描述对每一对运动特征 → 生理目标分别执行上述五步流程得到 9 个或按研究需要选定的几组单变量线性回归模型逐一描述其斜率方向与拟合效果。优点是与任务一完全同构、易于文字展开缺点是忽略了目标之间的相关性。路线 B多输出回归一步到位sklearn的LinearRegression原生支持多目标当y传入形状为(n_samples, n_targets)的矩阵时它会为每个目标分别拟合一个模型# 一次性建模3 个运动特征 - 3 个生理目标 model_multi linear_model.LinearRegression() model_multi.fit(X, y) # y 形状为 (20, 3) y_pred_multi model_multi.predict(X)也可以使用sklearn.multioutput.MultiOutputRegressor包装不支持多输出的估计器把多目标问题分解为多个单目标问题逐一求解。从本课简单线性回归 vs 多元线性回归的复习提示见 README 的 Review Self Study 部分可以看出课程希望学习者主动区分单变量回归一个特征、多元回归多个特征与多输出回归多个目标是三件不同的事Linnerud 作业正是练习多目标这一维度的契机。无论选择哪条路线写进段落里的核心逻辑都应一致先说明选择了哪些变量组合与建模方向再给出数据划分与模型训练方式最后基于可视化结果描述关系的方向正相关/负相关、强度与局限性。如何写出达到典范标准的描述性段落结合评分标准的典范档要求一段好的描述至少应包含以下层次可作为组织文字的模板数据集概述说明 Linnerud 数据集包含 20 名中年男性的 3 个运动变量与 3 个生理变量是典型的小样本多目标数据。变量与建模方向明确把仰卧起坐次数作为特征、腰围作为目标并解释为何选择这个方向运动量作为解释变量、生理指标作为被解释变量语义上更自然。流程陈述按加载数据 → 特征整形reshape(-1, 1)→train_test_split划分 →LinearRegression().fit()训练 →predict()预测 → 散点图叠加回归线的顺序用自然语言串联不必罗列代码但要让读者能复现思路。结果解读描述直线与散点的吻合程度、个别离群样本的可能含义并强调相关性不等于因果性——即便腰围与仰卧起坐呈现线性趋势也需要领域知识健身生理学辅助判断而不能仅凭 20 个样本断言因果关系。拓展与反思说明对 Chins、Jumps 等其余特征与 Weight、Pulse 等其余目标可采取逐对建模或多输出回归并指出小样本带来的过拟合风险与模型泛化局限。把以上五层内容组织成一段或若干段连贯的文字即可满足一段写得好的描述性段落的典范标准。相关学习资源本课完整教程 README环境搭建、notebook 使用、Scikit-learn 入门与糖尿病数据集练习的完整讲解Python 解决方案笔记本糖尿病数据集线性回归的完整可运行代码与输出R 语言版本教程使用 tidymodels/parsnip 完成同一练习的对照实现回归系列 sketchnote对回归概念的可视化速览英文版作业原文与本文对应的英文原始文档。完成本篇作业后你不仅掌握了 Linnerud 多目标数据集的建模方法更具备了把数据集结构、模型选择、训练流程、结果解读完整表述出来的能力——这正是后续回归课程数据可视化、线性回归、逻辑回归反复复用的一套思维框架。【免费下载链接】ML-For-Beginners12 weeks, 26 lessons, 52 quizzes, classic Machine Learning for all项目地址: https://gitcode.com/GitHub_Trending/ml/ML-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表