
ML-For-Beginners 入门指南用 Python 与 Scikit-learn 搭建你的第一个线性回归模型【免费下载链接】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 课程「回归Regression」章节的第 1 课核心主题是搭建本地机器学习开发环境Python Visual Studio Code Scikit-learn Jupyter Notebook并基于 Scikit-learn 内置的糖尿病数据集diabetes dataset完成你的第一个线性回归模型从导入依赖库、探索数据到拆分训练/测试集、训练模型、预测与可视化。学完本节你将具备用 Notebook 完成一次完整传统机器学习建模流程的实战能力并为后续线性/逻辑回归课程2-Regression/2-Data、2-Regression/3-Linear、2-Regression/4-Logistic打好工具基础。本课配套的速写笔记Sketchnote见 sketchnotes/ml-regression.png此外本课还提供了完整的 R 语言版本实现Tidymodels 框架见 2-Regression/1-Tools/solution/R/lesson_1.html。一、学习目标在开始搭建任何模型之前先确保工具链就绪。本课你将掌握四件事配置本地计算机使其可以胜任机器学习任务熟练使用 Jupyter Notebook 进行交互式编码安装并使用 Scikit-learn包括其核心 API 与内置数据集通过一次完整的动手练习理解线性回归的基本工作流。从本课起课程会连续用四节课讲解回归模型本课是工具篇Tools of the trade随后是数据管理、线性与多项式回归、逻辑回归。二、环境安装与配置机器学习实践对 Python 环境版本敏感因此课程的推荐路径是安装 Python 3 → 使用虚拟环境 → 安装 VS Code → 安装 Scikit-learn → 安装 Jupyter。1. 安装 Python 并启用虚拟环境大多数操作系统已预装 Python但仍建议从官方渠道安装最新稳定版。由于不同项目可能依赖不同 Python 版本某些依赖库只支持特定版本课程明确建议在**虚拟环境virtual environment**中工作Python 3 自带的venv模块即可完成python3 -m venv .venv source .venv/bin/activate # Linux / macOS # Windows: .venv\Scripts\activate虚拟环境能够将项目依赖与系统级 Python 隔离避免版本冲突——这也是本仓库所有 Notebook 练习的推荐运行方式。2. 安装 Visual Studio Code本课程使用 VS Code 作为主力编辑器。安装基础版本后需要为其配置 Python 开发能力安装 Python 扩展即可获得解释器选择、代码补全、调试与 Notebook 支持。VS Code 官方还提供了Python Coding Packs可一次性完成 Python 与 VS Code 的捆绑配置适合初学者。3. 安装 Scikit-learnScikit-learn 是课程的核心机器学习库。官方推荐在 Python 3 虚拟环境中安装pip install scikit-learn需要注意若在 Apple M1 Mac 上安装应优先参考官方安装页的特殊说明通常建议使用 conda 或预编译 wheel 以避免编译问题。4. 安装 Jupyter NotebookNotebook 是数据科学家的工作台需要通过 Jupyter 包获得pip install jupyter三、认识你的 ML 开发环境Notebook你将以Notebook为载体开发 Python 代码、构建模型。这类文件以.ipynb结尾是数据科学领域的通用工具它提供交互式环境让你在编写代码的同时把说明文字、公式、图表和运行结果穿插在一起——这对实验性、研究导向的项目尤其友好。本课的练习文件位于 2-Regression/1-Tools/notebook.ipynb仓库中还提供了含完整运行结果的参考实现 2-Regression/1-Tools/solution/notebook.ipynb。练习上手操作一个 Notebook在 VS Code 中打开notebook.ipynb系统会自动启动一个 Python 3 的 Jupyter 内核。Notebook 由一个个可独立运行的单元格cell组成点击单元格左侧的播放按钮▶即可执行当前代码块。新建一个 Markdown 单元格选择md标识输入标题文本# Welcome to your notebook同时熟悉在代码旁写文档的自文档化工作方式。新建一个代码单元格输入print(hello notebook)点击运行箭头执行该单元格你将看到输出hello notebook思考题网页开发者的工作环境与数据科学家的环境有何不同前者强调构建-部署循环后者强调交互式探索与实验记录——Notebook 正是为后者设计的。四、Scikit-learn 快速认知Scikit-learn读作sci如science是一个开源机器学习库同时支持监督学习与非监督学习并提供模型拟合、数据预处理、模型选择与评估等各类工具。它的 API 设计统一fit()训练、predict()预测、train_test_split()拆分数据降低了学习成本。本课程刻意选择传统机器学习路线回归、分类、聚类、NLP、时间序列等不涉及神经网络与深度学习——后者由微软的 AI for Beginners 系列课程专门覆盖。Scikit-learn 主要面向数值型数据且内置多个玩具数据集如本课使用的 diabetes和预构建模型非常适合作为教学工具。五、动手练习你的第一个 Scikit-learn 线性回归模型本节练习参考了 Scikit-learn 官方的 OLS 线性回归示例核心代码与完整运行输出可对照 2-Regression/1-Tools/solution/notebook.ipynb 查看。开始前请先将notebook.ipynb中的旧单元格清空点击垃圾桶图标。1. 业务场景与回归方法选型想象你是一名医学研究者想测试某种糖尿病治疗方案机器学习模型能基于多个变量组合预测哪些患者对治疗响应更好。即便是一个最基础的回归模型一旦可视化也能展示变量间的关系帮你组织理论上的临床试验。这里有一个方法选型的关键认知预测数值用线性回归预测类别用逻辑回归。例如预测某年龄人群的身高是数值问题线性回归而判断某菜系是否属于素食是类别问题逻辑回归。后续课程会深入逻辑回归。2. 导入依赖库import matplotlib.pyplot as plt import numpy as np from sklearn import datasets, linear_model, model_selectionmatplotlib绘图工具用于生成散点图与拟合直线numpyPython 数值计算核心库sklearnScikit-learn其中datasets提供内置数据linear_model提供线性回归模型model_selection负责把数据拆分为训练集与测试集。3. 加载糖尿病数据集内置的 diabetes 数据集 包含442 个样本、10 个特征变量常见特征包括age年龄岁bmi身体质量指数bp平均血压s1 tcT 细胞一种白细胞相关指标完整 10 个特征在 R 版课程中列示更全除上述外还有sex、s2 ldl、s3 hdl、s4 tch、s5 ltg、s6 glu六项血清测量值目标变量y是基线一年后疾病进展的定量度量。X, y datasets.load_diabetes(return_X_yTrue) print(X.shape) print(X[0])return_X_yTrue让返回值按元组拆分X为数据矩阵y为回归目标监督学习必须要有明确的y。运行输出(442, 10) [ 0.03807591 0.05068012 0.06169621 0.02187235 -0.0442235 -0.03482076 -0.04340085 -0.00259226 0.01990842 -0.01764613]说明数据是 442 行、每行 10 个元素的数组特征已标准化。思考题线性回归预测的是特征X与目标y之间的关系你能在官方文档中找到该数据集的 target 定义吗另外该数据集包含sex这类二分类特征不妨想一想类似的分类方式是否会因人群划分而影响治疗方案覆盖的公平性这也是本课程后续「公平性」章节会讨论的问题。4. 选择单一特征并重构为 2D 数组本练习只使用第三列索引 2即bmi进行一元线性回归X X[:, 2] X X.reshape((-1, 1))X[:, 2]:选取所有行2选取第 3 列reshape((-1, 1))将一维数组重构为 (442, 1) 的二维列向量——-1表示该维度由 NumPy 自动推算这是 Matplotlib 绘图与 Scikit-learn 输入所要求的格式。5. 拆分训练集与测试集机器学习需要留一手验证用一部分数据训练另一部分从未见过的数据评估模型。Scikit-learn 一行搞定X_train, X_test, y_train, y_test model_selection.train_test_split(X, y, test_size0.33)test_size0.33表示把 33% 的数据留作测试集其余 67% 用于训练与 R 版课程中initial_split(prop 0.67)的比例一致。6. 训练线性回归模型model linear_model.LinearRegression() model.fit(X_train, y_train)model.fit()是 Scikit-learn 乃至 TensorFlow 等绝大多数 ML 库的统一训练接口。LinearRegression()采用最小二乘法学习一条最佳拟合线使预测值与真实值之间的总体误差最小在 R/Tidymodels 版本中这一过程等价于linear_reg() %% set_engine(lm) %% set_mode(regression)后调用fit(y ~ ., data diabetes_train)见 2-Regression/1-Tools/solution/R/lesson_1.Rmd。7. 在测试集上预测y_pred model.predict(X_test)predict()用训练好的模型对测试数据生成预测值稍后将用于在数据分组之间绘制拟合直线。8. 可视化散点图 拟合线plt.scatter(X_test, y_test, colorblack) plt.plot(X_test, y_pred, colorblue, linewidth3) plt.xlabel(Scaled BMIs) plt.ylabel(Disease Progression) plt.title(A Graph Plot Showing Diabetes Progression Against BMI) plt.show()图中黑色小点为真实样本蓝色粗线为模型学到的线性关系。思考这条直线究竟做了什么它表达了bmi与疾病进展之间的平均趋势——给定一个新的、未知的 BMI 值你可以在直线上找到它对应的 y 轴位置这就是预测。恭喜你已经完成了第一个线性回归模型的构建、预测与可视化六、课程配套挑战与作业 挑战把X X[:, 2]中的索引 2 换成数据集的其他列如age、bp重新训练并绘图。结合该数据集 target 的定义一年后疾病进展你能从不同特征与疾病进展的关系中学到什么 作业阅读 Scikit-learn 的 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),仅供参考