资讯动态

ML-For-Beginners 机器学习技术详解:从提出问题到预测的七步完整工作流

发布时间:2026/9/11 3:08:33 来源:尧图企业网站定制
ML-For-Beginners 机器学习技术详解从提出问题到预测的七步完整工作流【免费下载链接】ML-For-Beginners12 weeks, 26 lessons, 52 quizzes, classic Machine Learning for all项目地址: https://gitcode.com/GitHub_Trending/ml/ML-For-Beginners机器学习ML模型的构建、使用与维护其流程与常规软件开发截然不同它不是写规则—跑通—上线而是一套围绕数据、模型与评估展开的迭代过程。本文以 ML-For-Beginners 课程《机器学习的技术Techniques of Machine Learning》一课为骨架系统拆解一条 ML 流程的七个核心步骤并结合仓库内 Regression、Classification、Clustering 与 Web-App 等章节的 Notebook 与 README 源码给出可直接运行、可验证的代码与参数说明。读完本文你将掌握如何提出一个适合 ML 回答的问题、如何准备数据并划分训练/测试/验证集、X与y的含义、model.fit的底层逻辑、欠拟合与过拟合的判别以及如何通过超参数调优与全新数据预测把模型推向生产环境。过拟合Overfitting示意图源来自课程作者 Jen Looper 绘制的信息图对应本课模型拟合小节。开篇为什么 ML 流程不同于普通开发工作流在编写条件判断或规则引擎时程序员把领域知识显式地写死在代码里而机器学习恰恰相反——它让模型从数据中自己发现规律。因此创建 ML 流程这门手艺craft由一系列相互依赖的步骤组成本课将其归纳为七步提出决定问题大多数 ML 流程始于一个无法用简单条件程序或规则引擎回答的问题这类问题通常围绕基于一批数据做预测。收集与准备数据数据是回答问题的前提数据的质量有时还有数量直接决定你能把问题回答得多好本阶段还包括数据可视化以及把数据拆分为训练组与测试组。选择训练方法根据问题性质与数据形态选择如何训练模型使其最好地反映数据并做出准确预测。这是整个流程中最需要专业经验、也最需要反复实验的环节。训练模型使用训练数据、借助各种算法让模型识别数据中的模式。模型内部可能使用可调整的权重weights以对数据的某些部分给予更高优先级。评估模型使用收集集中模型从未见过的数据即测试数据来检验其表现。参数调优依据模型表现更换控制算法行为的参数即超参数或变量重新执行流程。预测用全新的输入验证模型的准确度。这七步循环往复正是数据科学家日常工作的基本节奏。本课程的后续章节回归、分类、聚类、时间序列、强化学习无一不是对这七步的具体化实践。第一步提出一个该交给 ML的问题计算机特别擅长发现数据中隐藏的模式。当研究者面对的问题无法靠手写条件规则轻易回答时ML 的价值便显现出来。本课给出了两个对照案例精算场景数据科学家可以为吸烟者与非吸烟者的死亡率手工构造规则但当大量其他变量进入方程如病史、生活习惯、地区差异等一个 ML 模型往往能更有效地基于历史健康记录预测未来死亡率。气象场景预测某地四月的天气输入数据可能包含纬度、经度、气候变化、距海洋远近、急流模式等众多变量——这类多维预测显然不是几条if语句能覆盖的。✅ 判断问题是否适合 ML的经验法则如果答案能从数据中归纳出、但无法用显式规则穷举那么它就是 ML 的候选问题。构建前的准备任务四件必做之事在动手训练模型之前本课强调必须先完成若干前置任务Pre-building tasks确认数据、确定特征与目标、选择特征变量、可视化数据、划分数据集。数据收集与准备要有把握地回答你的问题你需要足够数量且类型正确的数据。此处包含两件事收集数据结合前一课《公平性与机器学习》的教训谨慎收集数据——留意数据来源、识别其中可能固有的偏差并记录数据的出处。准备数据数据准备包含多个环节若数据来自多个来源可能需要汇总collate并归一化normalize可以用多种方法提升数据的质量与数量例如把字符串转为数字见聚类课程 1-可视化基于原始数据生成新数据见分类课程 1-简介清洗与编辑数据见Web 应用课程训练模型前对 UFO 数据集做清洗随机打乱shuffle视训练技术的需要而定。✅ 收集并处理完数据后务必停下来审视数据的形状shape是否真的能回答你的问题——有时数据在给定任务上表现不佳正如聚类课程 1-可视化中探讨的那样。仓库中的分类课程 1-简介对数据准备有更具体的示范当类别样本不平衡时它使用imblearn.over_sampling的RandomOverSampler调用oversample.fit_resample(feature_df, labels_df)对少数类进行过采样再用pd.concat把标签与特征合并导出为cleaned_cuisines.csv这类干净数据集供后续分类器使用。特征Feature与目标Target理解 X 与 y特征feature是数据的一种可测量属性在许多数据集中以列名形式出现例如date、size、color。特征变量在代码中通常表示为X代表用于训练模型的输入变量。目标target是你试图预测的对象在代码中通常表示为y代表你向数据提出的问题的答案。例如12 月什么颜色的南瓜最便宜颜色是目标旧金山哪些街区的房产价格最好价格是目标。目标有时也被称为**标签label**属性。在仓库的线性回归课程中这一约定的实践非常清晰见2-Regression/3-Linear/README.mdX pie_pumpkins[DayOfYear].to_numpy().reshape(-1,1) y pie_pumpkins[Price]注意这里对X做了reshape(-1,1)LinearRegression期望输入是二维数组每一行对应一个输入特征向量单特征场景下需要形状为 N×1 的数组N 为样本数。这正是特征以X作为输入变量的代码级体现。特征选择Feature Selection与特征提取Feature Extraction构建模型时如何确定选用哪个变量你通常会经历特征选择或特征提取的过程为最高效的模型挑选合适的变量。本课特别强调二者不是一回事特征提取Feature extraction从原始特征的函数中创造出新特征而特征选择Feature selection则是返回原始特征的一个子集。例如在3-Web-App中model.pkl落盘前对输入列做了筛选只保留目标相关列并astype转换即属于特征选择而在多项式回归中通过PolynomialFeatures(2)生成DayOfYear²这样的新特征则属于特征提取的典型做法。可视化你的数据数据科学家工具箱中重要的一环是用 Seaborn、MatPlotLib 等库可视化数据。数据的视觉呈现能帮你揭示可加以利用的隐藏相关性也有助于发现偏差或不均衡数据详见分类课程 2-分类器 1。例如在回归课程 2-数据中课程先绘制价格与品种的条形图、价格与年内第几天的散点图再依据图形决定是否值得继续训练回归模型——可视化先行建模在后。划分数据集训练 / 测试 / 验证训练之前必须把数据集划分为两个或多个不等大小、但都能良好代表整体数据的部分训练集Training用来拟合fit模型是原始数据集的大部分。测试集Testing一组独立数据通常取自原始数据用来确认已建模型的表现——这是模型从未见过的数据。验证集Validation一组更小的独立样本用来调优模型的超参数或架构以改进模型。视数据规模与问题而定你可能不需要构造这第三个集合正如时间序列预测 1-简介中所指出的。仓库里到处可见这种划分的标准写法。线性回归课程2-Regression/3-Linear/README.mdfrom sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.2, random_state0)test_size0.2把 20% 的数据划为测试集80% 用于训练不等式划分的默认体现random_state0固定随机种子保证每次运行得到相同的划分便于复现实验结果。分类课程4-Classification/2-Classifiers-1/README.md则按 70/30 划分X_train, X_test, y_train, y_test train_test_split(cuisines_feature_df, cuisines_label_df, test_size0.3)小贴士train_test_split还可以接受stratifyy参数做分层划分保证训练/测试集中各类别比例与原始数据一致——在处理不均衡分类数据时尤其重要可结合分类课程 1-简介的过采样方法一起使用。构建模型从选择方法到评估有了训练数据目标就是构建一个模型——数据的统计表示——并使用多种算法去训练它。训练过程把数据暴露给模型让它对发现的模式做出假设再加以验证、接受或拒绝。决定训练方法训练方法取决于你的问题与数据本质。本课程使用Scikit-learn其 user guide便同时对比了 Logistic Regression 与 Linear SVC 两种方法Linear SVC: SVC(kernellinear, CC, probabilityTrue, random_state0)kernellinear指定线性核C是正则化强度超参数probabilityTrue让模型输出概率random_state0保证可复现——这些参数选择本身就是一个决定训练方法的完整例子。训练模型model.fit 的时刻你会发现几乎所有 ML 库中都存在model.fit方法——这就是你把特征变量通常是X数组与目标变量通常是y送入模型的那一刻。线性回归课程中的完整训练只有两行from sklearn.linear_model import LinearRegression lin_reg LinearRegression() lin_reg.fit(X_train, y_train)拟合完成后lin_reg.coef_保存回归系数单特征场景下约为-0.017意味着价格随时间缓慢下降、每天约 2 美分lin_reg.intercept_保存截距约为21代表年初的基准价格。评估模型训练过程可能耗费许多轮迭代大模型的训练常以epoch为单位训练结束后即可用测试数据评估模型质量——这些数据是模型此前未曾分析过的原始数据子集。你可以打印一张关于模型质量的指标表。以线性回归为例2-Regression/3-Linear/README.mdfrom sklearn.metrics import mean_squared_error pred lin_reg.predict(X_test) rmse np.sqrt(mean_squared_error(y_test, pred)) print(fRMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)) score lin_reg.score(X_train, y_train) print(Model determination: , score)RMSE均方根误差预测值与真实值之差的平方均值的平方根越小越好该例约为 2 个价格点约 17%。决定系数coefficient of determinationscore取值 0 表示模型完全未利用输入等同于最差的线性预测器——直接输出结果均值取值 1 表示完美预测。该例约 0.06说明单一特征对价格解释力有限这正是促使课程继续引入多项式特征的动机。分类场景的评估则常用准确率与混淆矩阵见分类课程 2-分类器 1中对 KNeighbors、SVC、决策树、随机森林等分类器的横向对比。模型拟合欠拟合与过拟合模型拟合Model fitting指模型底层函数在分析不熟悉数据时的准确程度。 **欠拟合Underfitting与过拟合Overfitting**是降低模型质量的常见问题分别对应拟合得不够好与拟合得太过头过拟合模型对训练数据预测得太好——因为它把数据的细节与噪声都学进去了导致对新数据的泛化能力差。欠拟合模型不准确——它既无法准确分析训练数据也无法处理未见过的数据预测结果与训练数据贴合过松。判别要点过拟合 训练集表现优异、测试集表现差欠拟合 训练集本身都拟合不好。缓解思路包括增加/减少模型复杂度、正则化如 SVC 中的C、交叉验证cross_val_score见分类课程 2-分类器 1的导入语句以及收集更多数据。参数调优与超参数打交道初始训练完成后观察模型质量并考虑通过调整其**超参数hyperparameters**来改进模型。超参数是控制算法行为的参数——它们不通过学习获得而是在训练前由你设定在分类课程中C正则化强度、kernel核函数就是需要调优的超参数在多项式回归中PolynomialFeatures(2)的次数是决定模型复杂度的关键超参数2意味着引入所有二次多项式如DayOfYear²若有 X、Y 两个输入则会加入 X²、XY、Y²次数越高模型越灵活、也越容易过拟合。调优的典型做法是网格搜索GridSearchCV 交叉验证对候选超参数组合逐一训练并用验证集打分选出最优组合。这也正对应了本课第七步预测之前的循环评估 → 调参 → 再训练。预测把模型投入实战最后一步是使用完全新的数据检验模型准确度。在应用型ML 场景——即为生产环境构建 Web 资产时——这一过程通常涉及收集用户输入例如一次按钮点击将其设为变量并发送给模型做**推理inference**或评估。仓库中的Web 应用课程3-Web-App正是这一环节的完整体现课程先用 Jupyter Notebook 训练一个 UFO 目击分类模型并通过joblib.dump把模型序列化为model.pkl随后在 Flask 应用中加载该文件把用户从 HTML 表单输入的数据经astype转换后的数值特征传入模型最终把预测结果渲染回页面。至此训练 → 评估 → 调优 → 预测形成了一个可落地的闭环。配套练习流程图挑战与采访数据科学家作业本课的巩固环节同样紧扣七步流程挑战画一张流程图描绘 ML 从业者的工作步骤。问自己此刻你处于流程中的哪个位置你预计会在哪一步遇到困难哪一步对你来说比较容易课后作业采访一位数据科学家——在公司、用户组或同学中找一位以数据科学为职业的人写一篇约 500 字的短文描述其日常工作他们是某个领域的专家还是full stack通才作业评分标准Rubric要求文章长度达标、注明来源并以 .doc 文件提交否则只能得到合格甚至待改进的评价。每课还配套课前/课后测验Pre-lecture quiz 与 Post-lecture quiz可在课程根目录的quiz-app中找到测验应用源码quiz-app/src用于自测本课概念掌握程度。在仓库中继续深入本文讨论的所有概念都能在仓库中找到可运行的载体建议按以下顺序深入机器学习技术本课作业完成采访数据科学家实践任务回归课程 3-线性回归体验train_test_split、fit、RMSE 与多项式回归make_pipelinePolynomialFeatures的完整代码分类课程 2-分类器 1对比多种分类器并实践cross_val_score与超参数C聚类课程 1-可视化练习字符串转数字等数据准备手法Web 应用课程把训练好的model.pkl部署为真实 Web 服务完成预测环节的实战闭环。总结机器学习不是写死规则而是一条提出问题 → 准备数据 → 选择方法 → 训练 → 评估 → 调参 → 预测的迭代流水线。本课为你建立的是贯穿整个 ML-For-Beginners 课程的方法论骨架X与y的约定、训练/测试/验证的划分、model.fit的语义、欠拟合与过拟合的权衡、超参数调优的必要性以及把模型交付给真实用户时推理环节的形态。掌握了这七步你就拥有了成为一名 full stack ML 工程师的底层地图——后续每一课都是在这张地图上填充更具体的算法与工具。【免费下载链接】ML-For-Beginners12 weeks, 26 lessons, 52 quizzes, classic Machine Learning for all项目地址: https://gitcode.com/GitHub_Trending/ml/ML-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价