Hotdry.
ai-systems

动手实现 Microsoft ML-For-Beginners 的 26 个经典 ML 练习与测验:回归、聚类、NLP 等

基于 Microsoft 开源课程,从初学者到中级,指导实现回归、分类、聚类、NLP、时间序列等 26 个核心 ML 练习,包含测验、代码参数与优化清单。

Microsoft 的 ML-For-Beginners 课程是一个优秀的开源项目,专为机器学习初学者到中级学习者设计。它包含 12 周的 26 个课时和 52 个测验(每个课时前后各一个),聚焦经典机器学习算法,使用 Scikit-learn 库,避免深度学习。通过项目驱动的方式学习,用户可以边构建边掌握回归、分类、聚类、自然语言处理(NLP)、时间序列预测和强化学习等核心技术。

为什么选择这个课程实现?

这个课程的最大亮点在于其实践导向:每个课时从预习测验开始,结合真实数据集(如北美南瓜价格、亚洲美食推荐、尼日利亚音乐偏好、欧洲酒店评论、世界电力消耗等),逐步构建模型,并以挑战和作业巩固。相比纯理论教材,这里强调代码实现和可视化,帮助用户快速上手。课程还提供解决方案文件夹,便于对照调试。

实现这些练习,不仅能掌握算法原理,还能学会数据清洗、可视化、模型评估和部署(如 Web App)。对于初学者,这是从零构建 ML 管道的理想起点;中级用户可优化超参数,提升模型性能。

环境搭建与运行指南

  1. Fork 并克隆仓库:访问 https://github.com/microsoft/ML-For-Beginners,Fork 到个人账号,运行 git clone https://github.com/{your-username}/ML-For-Beginners.git
  2. Python 环境:使用 Python 3.8+,创建虚拟环境 python -m venv ml-env,激活后 pip install -r requirements.txt(仓库根目录有依赖列表,包括 scikit-learn、pandas、matplotlib、nltk 等)。推荐 Jupyter Notebook 或 VS Code。
  3. 运行测验:测验托管在 quiz-app 文件夹,支持本地部署(npm install && npm start)或直接在线访问 https://ff-quizzes.netlify.app/en/ml/。每个课时链接对应测验,3 题小测验证掌握度。
  4. R 语言支持:部分课时有 R Markdown (.rmd) 版本,使用 RStudio 渲染。

常见 pitfalls:确保数据集下载完整(lesson 文件夹内);Windows 用户注意路径分隔符;GPU 非必需,CPU 即可跑。

核心练习实现详解

课程分为 9 大组,以下聚焦 4 个代表模块,给出关键代码片段、参数和优化清单。完整 26 个练习类似,按顺序推进。

1. 回归(Regression):南瓜价格预测(课时 5-8)

数据集:北美南瓜产量 / 价格,目标预测价格。

  • 线性回归from sklearn.linear_model import LinearRegression; model = LinearRegression(); model.fit(X_train, y_train)
    • 参数:默认 fit_intercept=True;优化:标准化 StandardScaler(),test_size=0.2, cv=5。
    • 评估:R² > 0.8 为佳;可视化 plt.scatter(y_test, predictions)
  • 多项式回归PolynomialFeatures(degree=2) 扩展特征。
  • 逻辑回归:分类价格区间,LogisticRegression(solver='liblinear', max_iter=200),C=1.0(正则化)。 落地清单: | 参数 | 推荐值 | 作用 | |------|--------|------| | test_size | 0.2 | 划分比例 | | poly_degree | 2 | 避免过拟合 | | alpha | 0.01 | Ridge 回归 L2 正则 |

“课程使用南瓜价格数据集演示回归,从数据清洗到模型部署。”

2. 分类(Classification):美食推荐(课时 10-13)

数据集:亚洲 / 印度菜谱,分类菜系。

  • 决策树 / 随机森林RandomForestClassifier(n_estimators=100, max_depth=5)
    • 参数:class_weight='balanced' 处理不均衡;GridSearchCV 调参 {'n_estimators': [50,100], 'max_depth': [3,5]}。
  • 部署 Web App:使用 Flask/Streamlit,pickle.dump(model, open('model.pkl', 'wb')),预测接口。 评估:Accuracy > 85%,Confusion Matrix。

3. 聚类(Clustering):尼日利亚音乐(课时 14-15)

  • K-MeansKMeans(n_clusters=4, random_state=42, n_init=10)
    • 参数:用 Elbow 方法选 k(SSE 拐点);Silhouette Score > 0.5。
    • 可视化:PCA 降维 PCA(n_components=2) 后 t-SNE。 落地:n_clusters=3~6,init='k-means++'。

4. NLP:酒店评论情感分析(课时 16-20)

  • 文本预处理CountVectorizer(stop_words='english') 或 TF-IDF。
  • 情感分类MultinomialNB() 或 Logistic。
    • 参数:max_features=5000, ngram_range=(1,2)。
  • 翻译 / 情感:集成 googletrans,VADER 情感分数。 优化:Pipeline 串联 Pipeline([('tfidf', TfidfVectorizer()), ('clf', LogisticRegression())])

其他亮点:时间序列(ARIMA/SVR)、强化学习(Q-Learning)

  • ARIMA:SARIMAX(order=(1,1,1)),p,d,q 通过 ACF/PACF。
  • Q-Learning:Gym 环境,alpha=0.1, gamma=0.99, epsilon=0.1(探索率衰减)。

每个练习后,做 post-quiz 和 assignment(如自定义数据集应用)。

学习监控与进阶 checklist

  • 进度追踪:用 PAT(Progress Assessment Tool)表格自评,每组课时后讨论区分享。
  • 性能阈值:回归 MSE <阈值;分类 F1> 0.8;聚类 Silhouette > 0.4。
  • 回滚策略:模型保存 joblib.dump(model, 'model.joblib');版本控制 Git commit 每个 lesson。
  • 监控点:Jupyter % timeit 基准;MLflow 记录实验(可选扩展)。 Checklist:
  1. 完成预 / 后测验(目标 100%)。
  2. 无警告运行 solution 代码。
  3. 自定义数据集复现(+20% 分)。
  4. Web 部署至少 1 个模型。

风险与局限

经典 ML 适合小数据集(<10k 样本),大数​​据用深度学习。注意公平性(课时 3):检查 bias 用 fairlearn

通过这个课程,用户能构建完整 ML 技能栈。预计 12 周,单人每周 5-10 小时。

资料来源

(正文字数约 1250)

查看归档