ML-From-Scratch 完整指南:用纯 NumPy 手写 40 多个机器学习算法,免费的算法入门教程
【免费下载链接】ML-From-ScratchMachine Learning From Scratch. Bare bones NumPy implementations of machine learning models and algorithms with a focus on accessibility. Aims to cover everything from linear regression to deep learning.项目地址: https://gitcode.com/GitHub_Trending/ml/ML-From-Scratch
ML-From-Scratch 是一个用纯 NumPy 从零手写机器学习算法的项目:从线性回归、随机森林、SVM,到卷积神经网络、生成对抗网络和深度 Q 网络,不依赖 PyTorch 或 TensorFlow。全部 40 多个算法分布在 4 个目录里,单文件多在百来行到七百余行,读完即懂。适合备考面试、做课程作业,或者想搞清楚 sklearn 内部在干什么的开发者。
两个典型使用场景
排查反向传播 bug 时,你不再需要对着视频截图猜。打开 neural_network.py,文件只有 123 行,前向计算和梯度回传一行行写清楚,可以直接和手算的偏导逐项对。
写作业时被要求"手写 KNN",先读懂 k_nearest_neighbors.py 的实现思路,再自己重写一遍,比找十篇博客快。面试前一晚翻一遍 regression.py,里面线性、多项式、Ridge、Lasso、Elastic Net 五种回归挨着写,参数如何进损失函数一目了然。
三步本地部署并跑通第一个算法
git clone https://gitcode.com/GitHub_Trending/ml/ML-From-Scratch cd ML-From-Scratch python setup.py install python mlfromscratch/examples/polynomial_regression.py依赖只有 matplotlib、numpy、sklearn、pandas、scipy 等纯 CPU 计算包,见 requirements.txt。普通笔记本就能跑,不需要 GPU,也没有模型权重下载。如果setup.py install报错,换pip install -r requirements.txt,效果一样。
能力拆解:这个仓库到底给了你什么
手写的深度学习底座。场景:想弄清 Conv2D 的卷积和反向传播到底怎么算。怎么用:layers.py 手写了卷积、最大/平均池化、Dropout、BatchNorm、Flatten、RNN 等 13 种层,neural_network.py 是前向/反向训练循环。效果:convolutional_neural_network.py 用 5 层 CNN 在 CPU 上约 2 分钟训出 98.7% 的手写数字(8×8 数据集)准确率,改学习率和层数立刻能看到变化。
覆盖面完整的算法库。场景:需要一个算法的最短可运行参考实现。怎么用:supervised_learning/ 收齐线性/逻辑回归、决策树、随机森林、XGBoost、SVM、朴素贝叶斯等 21 种;unsupervised_learning/ 有 K-Means、DBSCAN、GMM、PCA、Apriori、FP-Growth、GAN 等 12 种;reinforcement_learning/ 是 DQN。效果:每个文件独立,能直接当教材读,也能import进自己的代码里做对比实验。
开箱即跑的演示脚本。场景:想看某个算法训练过程的完整输出。怎么用:直接跑 examples/ 下的脚本。效果:多项式回归拟合瑞典 Linköping 2016 年真实温度数据(数据文件在 data/TempLinkoping2016.txt);神经进化示例演化 3000 代,最终测试精度 96.7%;遗传算法在约 300 代后拼出目标字符串 'Genetic Algorithm'。示例里 sklearn 只负责加载数据集,算法本体全部是手写的。
版本与硬件选择
仓库里只有一套纯 NumPy 实现,不存在量化或 GPU 配置选项,真正的选择是"读多深"和"用什么 Python 版本":
| 维度 | 入门路线 | 完整路线 |
|---|---|---|
| 范围 | 只读 supervised_learning/ 目录 | 加 unsupervised_learning/、deep_learning/、reinforcement_learning/ |
| 内容 | 线性/逻辑回归、决策树、SVM、随机森林等 21 个监督算法 | 再加 RNN、CNN、GAN、RBM、DQN 等进阶实现 |
| 建议时间 | 一两周,每文件百行左右 | 一个暑假,layers.py 733 行是核心硬骨头 |
硬件要求很低:
| 项目 | 要求 |
|---|---|
| GPU / 显存 | 不需要,全部 CPU 运行 |
| 内存 | 8GB 即可 |
| Python | 建议 3.7–3.9(原因见下节) |
避坑清单
现象:跑 deep_q_network.py 报ModuleNotFoundError: No module named 'gym'。原因:gym 项目已停止维护,新版与 Python 3.10+ 不兼容。解决:先跳过 DQN 示例,其他算法都不依赖它;必须跑的话换 Python 3.9 再装。
现象:pip install cvxopt下载源码后编译失败。原因:cvxopt 需要 C++ 工具链编译,而全仓库只有贝叶斯回归用到它。解决:不学贝叶斯回归就跳过它,把 requirements.txt 里这一行删掉再安装。
现象:python setup.py install在新环境里直接报错。原因:setup.py 是老式安装写法,新版 pip 收紧了限制。解决:改用pip install -r requirements.txt或pip install -e .。
现象:import 时出现 AttributeError 或 sklearn 接口报错。原因:代码年代较早,新版 numpy、sklearn 删除了旧接口。解决:把 numpy 固定在 1.23、sklearn 固定在 0.24 左右,这个组合和代码年代配套,基本不再打架。
坦率选型建议
适合谁:备考算法面试、写课程作业,或者受够了"调包但说不清原理"、想逐行看懂每个算法内部的人。 不适合谁:要上生产环境的人——README 明确说项目目标是透明易懂,而不是性能优化,API 和 sklearn 也不兼容,线上服务请用成熟库。
项目是 MIT 许可证,商用和修改都没有限制。继续深入请读 README.md、核心源码 mlfromscratch/deep_learning/ 和全部示例 mlfromscratch/examples/。
【免费下载链接】ML-From-ScratchMachine Learning From Scratch. Bare bones NumPy implementations of machine learning models and algorithms with a focus on accessibility. Aims to cover everything from linear regression to deep learning.项目地址: https://gitcode.com/GitHub_Trending/ml/ML-From-Scratch
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考