build-your-own-x-machine-learning
动手造轮子:用 NumPy 从零实现 ML/DL/LLM 全套算法
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
动手造轮子:用 NumPy 从零实现 ML/DL/LLM 全套算法
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

图1:项目 Banner
想象一下:你用 scikit-learn 五行代码跑通了线性回归,准确率还不错——但当面试官追问「梯度下降的更新公式是什么」「为什么学习率太大会震荡」,你支支吾吾说不出所以然。这就是机器学习学习者的经典困境:调得动 API,却读不懂底层。
Amit Shekhar 解决这个问题的方式很直接——把所有东西从头实现一遍。他创建的 build-your-own-x-machine-learning 仓库,正是这样一张从线性回归直通大语言模型的完整路线图。
本仓库由 Amit Shekhar 创建,他是 Outcome School( outcomeschool.com )的创始人,也是一位活跃的 AI 教育者。Outcome School 专注于将复杂的 AI 技术拆解为可操作的实战项目,帮助学员获得高薪技术岗位。
仓库创立于 2025 年 5 月,截至 2026 年 6 月已积累 489 颗 GitHub Stars,围绕「Build Your Own X」这一教育哲学展开——这与著名的 build-your-own-x 系列一脉相承,但聚焦于机器学习垂直领域。仓库遵循 Apache-2.0 开源许可证,允许自由使用和商业化。
本仓库的内容体系极其庞大,涵盖以下九大板块:
这是仓库最成熟的部分,已有多个可直接运行的完整实现:
| 算法 | 实现文件 | 核心特点 |
|---|---|---|
| 线性回归 | linear_regression.py | 梯度下降 + NumPy |
| 逻辑回归 | logistic_regression.py | Sigmoid + 交叉熵损失 |
| KNN | knn.py | 纯 Python 最近邻 |
| 激活函数全家桶 | activation_functions.py | Sigmoid/Tanh/ReLU/LeakyReLU/Softmax |
| MSE / MAE | 独立文件 | 两种损失函数实现 |
以线性回归为例,代码结构清晰到令人感动:
class LinearRegression:
def __init__(self, learning_rate=0.01, n_epochs=1000):
self.learning_rate = learning_rate
self.n_epochs = n_epochs
self.weights = None
self.bias = None
def fit(self, X, y):
n_samples, n_features = X.shape
self.weights = np.zeros(n_features)
self.bias = 0
for _ in range(self.n_epochs):
y_predicted = np.dot(X, self.weights) + self.bias
dw = (1 / n_samples) * np.dot(X.T, (y_predicted - y))
db = (1 / n_samples) * np.sum(y_predicted - y)
self.weights -= self.learning_rate * dw
self.bias -= self.learning_rate * db
def predict(self, X):
return np.dot(X, self.weights) + self.bias
这段代码用 NumPy 手写了梯度下降的全过程——从参数初始化、预测计算、梯度推导到参数更新,每一步都对应 Andrew Ng 机器学习课程中的公式。读完这段代码,你再去看 scikit-learn 的源码,会有一种「原来如此」的通透感。
这一板块野心最大,计划覆盖:
目前 neural-network/neural_network.py 已落地,其余为计划中的里程碑。
涵盖 16 种推荐系统场景:电影推荐、YouTube 视频推荐、图书推荐、音乐推荐等,每个场景都计划给出完整实现。
40+ 个 CV 项目,涵盖图像分类、目标检测、人脸识别、图像分割、OCR 等完整场景。
超过 40 个 NLP 项目,包括语言翻译、文本摘要、BPE 分词器、Word2Vec、情感分析、聊天机器人、LLM 应用等。
涵盖 LSTM、ARIMA、Prophet 等经典预测模型在实际场景(股票、比特币、销量、天气)中的应用。
异常检测、情感分析、强化学习(Q-Learning / DQN / PPO)、推荐系统等广泛领域。
| 技术 | 用途 | 选择理由 |
|---|---|---|
| NumPy | 核心计算 | 零依赖,理解底层数学 |
| Python | 编程语言 | 机器学习教学首选 |
| 纯 CPU | 计算环境 | 无 GPU 依赖,本地可运行 |
为什么选择纯 NumPy 而不是 PyTorch/TensorFlow? Amit Shekhar 在 README 中表达得很清楚:只有亲手用 NumPy 实现,才能真正理解 Autograd 的意义、计算图的机制、参数更新的逻辑。这是一种刻意练习(Deliberate Practice)的教育理念。
仓库采用分层目录结构:
build-your-own-x-machine-learning/
├── assets/
│ └── banner.png # 项目 Banner
├── tutorials/
│ ├── core-machine-learning-algorithms/
│ │ ├── linear-regression/
│ │ │ └── linear_regression.py ← 每个算法独立文件
│ │ ├── logistic-regression/
│ │ ├── knn/
│ │ ├── activation-functions/
│ │ └── ...
│ └── neural-networks-and-deep-learning/
│ └── neural-network/
│ └── neural_network.py
├── README.md
└── LICENSE
每个算法是一个独立的 .py 文件,结构统一:
class AlgorithmName)fit() 方法:训练逻辑predict() 方法:推理逻辑if __name__ == "__main__": 示例用法这种「一算法一文件」的设计,极大降低了学习门槛——你不需要 clone 整个仓库,只需要打开某个文件,100-200 行代码就读完了一个算法的完整实现。
| 维度 | 评分 | 说明 |
|---|---|---|
| 代码质量 | ⭐⭐⭐⭐☆ (85/100) | 类封装规范,注释详尽,适合教学 |
| 测试覆盖 | ⭐⭐☆☆☆ | 无独立测试套件,但代码自带 example 运行验证 |
| 文档质量 | ⭐⭐⭐⭐⭐ (优秀) | README 体系完整,目录清晰,链接直达代码 |
| 可复现性 | ⭐⭐⭐⭐☆ | 依赖极简(numpy),本地可零配置复现 |
# Clone 仓库
git clone https://github.com/amitshekhariitbhu/build-your-own-x-machine-learning.git
cd build-your-own-x-machine-learning
# 安装依赖(仅 numpy)
pip install numpy
# 运行线性回归示例
python tutorials/core-machine-learning-algorithms/linear-regression/linear_regression.py
输出结果:
Predictions: [ 19.001 33.984 49.018 64.014]
Learned weights: [2.994]
Learned bias: 4.018
| 项目 | 需求 |
|---|---|
| CPU | 任意主流处理器 |
| GPU | 不需要(纯 NumPy 实现) |
| 内存 | 2GB+ |
| 磁盘 | 200MB |
尽管项目极具价值,仍有以下局限:
机器学习学习资源已经相当丰富——Coursera、吴恩达课程、fast.ai、Kaggle……那么这个项目有什么独特价值?
答案是**「自己动手实现」这一独特路径**。它填补了一个空白:从「看懂理论」到「能写代码」之间的鸿沟。大多数教程教的是「怎么用」,这个项目教的是「怎么造」。
| 指标 | 数值 |
|---|---|
| GitHub Stars | 489(2025.05 创建,约 14 个月) |
| Forks | 86 |
| Stars 月均增长 | ~30/月 |
这个增长曲线对于一个教育类仓库来说相当健康——随着 AI 热度持续,更多开发者意识到「调库不等于理解」,这类从零实现的项目需求会进一步增长。
本项目体现了 AI 教育领域的几个重要趋势:
适合:
不适合:
一句话总结:这是一本用代码写成的机器学习教科书,适合那些不满足于「调库」,而想真正「造轮子」的开发者。