NumPy 从零实现机器学习
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @kunlungrowth/numpy-ml-from-scratch
技能介绍
痛点:能看懂公式,写不出代码
机器学习入门最常见的断层,不是数学不够,而是从公式到可运行代码之间的桥没人带你走。你看得懂梯度下降的推导,但让你用 NumPy 把前向传播、反向传播完整实现一遍,往往会卡在矩阵维度对不上、梯度方向搞反这些细节上。面试要求手写模型、课程作业要求不用框架,这时候才发现「理解」和「会写」是两回事。
技能如何工作
这个技能以「拆轮子」的方式带你逐个实现经典模型,推荐顺序由浅入深:
- 阶段 1:线性回归 / 逻辑回归——练向量化、损失函数、梯度下降
- 阶段 2:kNN / 朴素贝叶斯——体会无梯度方法、距离度量
- 阶段 3:决策树 / 随机森林——递归划分、信息增益
- 阶段 4:SVM——间隔最大化(概念层)
- 阶段 5:两层神经网络——反向传播、链式法则
每个模型都遵循一套通用骨架:
- 初始化参数(权重小随机、偏置为零)
- 前向传播(纯矩阵运算,避免 Python 循环)
- 计算损失(MSE / 交叉熵,记录便于画图)
- 反向传播(手推
dW/db,用矩阵维度反推) - 参数更新(
w -= lr * dw,注意学习率) - 循环至收敛,绘制 loss 曲线验证下降
如何确认你写对了
技能提供两条验证路径:把同一份数据丢进 scikit-learn 的同类模型,对比预测与 loss 是否一致;用有限差分近似梯度,和你手推的梯度对比是否吻合。另外给出常见陷阱清单:忘记特征标准化导致梯度下降在狭长谷底不收敛、矩阵维度对不上、学习率过大导致 loss 变 NaN、用测试集调参造成数据泄露。
适用边界
这套实现面向学习与面试准备,目标是建立梯度、损失与优化的肌肉记忆。生产环境请优先使用经过大规模验证的成熟库,自写实现需充分测试。
使用场景
- 学完机器学习理论但不会写代码,需要用NumPy实现线性回归打通公式到代码
- 准备机器学习面试,要手写两层神经网络的反向传播并验证梯度正确
- 完成课程作业,必须不用任何框架用NumPy从零实现决策树和随机森林
- 想理解梯度下降的推导,用NumPy手推dW和db并用sklearn对比结果
适合人员
- 刚学完机器学习理论的初学者,想打通公式到代码的断层
- 准备机器学习岗位面试的求职者,需要手写模型的手感
- 完成机器学习课程作业的学生,必须用NumPy从零实现经典模型
- 想深入理解反向传播的工程师,打算用矩阵运算推导梯度