Python社区  »  机器学习算法

史上最强:numpy 实现全部机器学习算法

Python开发者 • 3 月前 • 35 次点击  

(给Python开发者加星标,提升Python技能

来源:SOTOM数据科学

来自于加州伯克利大学的David Bourgin 使用Numpy实现了几乎全部的机器学习算法,真正实现了手撸ML的愿景。多少“调包侠”的愿望都被这位小哥实现了!


该项目超过3万行代码,除了算法本身,还有很多的数据预处理代码!


地址:https://github.com/ddbourgin/numpy-ml



手撸算法的目的在于能够更好的学习和深入理解算法,而不是要替代已有的框架,毕竟成熟的框架在效率和精准度上都已经得到验证。


我们来看下已经实现的算法:


1. 高斯混合模型


  • EM 训练

2. 隐马尔可夫模型


  • 维特比解码

  • 似然计算

  • 通过 Baum-Welch/forward-backward 算法进行 MLE 参数估计


3. 隐狄利克雷分配模型(主题模型)


  • 用变分 EM 进行 MLE 参数估计的标准模型

  • 用 MCMC 进行 MAP 参数估计的平滑模型

4. 神经网络


4.1 层/层级运算


  • Add

  • Flatten

  • Multiply

  • Softmax

  • 全连接/Dense

  • 稀疏进化连接

  • LSTM

  • Elman 风格的 RNN

  • 最大+平均池化

  • 点积注意力

  • 受限玻尔兹曼机 (w. CD-n training)

  • 2D 转置卷积 (w. padding 和 stride)

  • 2D 卷积 (w. padding、dilation 和 stride)

  • 1D 卷积 (w. padding、dilation、stride 和 causality)

4.2 模块


  • 双向 LSTM

  • ResNet 风格的残差块(恒等变换和卷积)

  • WaveNet 风格的残差块(带有扩张因果卷积)

  • Transformer 风格的多头缩放点积注意力

4.3 正则化项


  • Dropout

  • 归一化

  • 批归一化(时间上和空间上)

  • 层归一化(时间上和空间上)

4.4 优化器


  • SGD w/ 动量

  • AdaGrad

  • RMSProp

  • Adam


4.5 学习率调度器


  • 常数

  • 指数

  • Noam/Transformer

  • Dlib 调度器


4.6 权重初始化器


  • Glorot/Xavier uniform 和 normal

  • He/Kaiming uniform 和 normal

  • 标准和截断正态分布初始化


4.7 损失


  • 交叉熵

  • 平方差

  • Bernoulli VAE 损失

  • 带有梯度惩罚的 Wasserstein 损失


4.8 激活函数


  • ReLU

  • Tanh

  • Affine

  • Sigmoid

  • Leaky ReLU


4.9 模型


  • Bernoulli 变分自编码器

  • 带有梯度惩罚的 Wasserstein GAN


4.10 神经网络工具


  • col2im (MATLAB 端口)

  • im2col (MATLAB 端口)

  • conv1D

  • conv2D

  • deconv2D

  • minibatch


5. 基于树的模型


  • 决策树 (CART)

  • [Bagging] 随机森林

  • [Boosting] 梯度提升决策树


6. 线性模型


  • 岭回归

  • Logistic 回归

  • 最小二乘法

  • 贝叶斯线性回归 w/共轭先验


7.n 元序列模型


  • 最大似然得分

  • Additive/Lidstone 平滑

  • 简单 Good-Turing 平滑


8. 强化学习模型


  • 使用交叉熵方法的智能体

  • 首次访问 on-policy 蒙特卡罗智能体

  • 加权增量重要采样蒙特卡罗智能体

  • Expected SARSA 智能体

  • TD-0 Q-learning 智能体

  • Dyna-Q / Dyna-Q+ 优先扫描


9. 非参数模型


  • Nadaraya-Watson 核回归

  • k 最近邻分类与回归


10. 预处理


  • 离散傅立叶变换 (1D 信号)

  • 双线性插值 (2D 信号)

  • 最近邻插值 (1D 和 2D 信号)

  • 自相关 (1D 信号)

  • 信号窗口

  • 文本分词

  • 特征哈希

  • 特征标准化

  • One-hot 编码/解码

  • Huffman 编码/解码

  • 词频逆文档频率编码


11. 工具


  • 相似度核

  • 距离度量

  • 优先级队列

  • Ball tree 数据结构


传送门:https://github.com/ddbourgin/numpy-ml


- EOF -

推荐阅读  点击标题可跳转

1、Numpy 脑洞玩法之图片切割拼接

2、Numpy高级操作大全!!!

3、这一招将 Numpy 加速 700 倍!!!


觉得本文对你有帮助?请分享给更多人

推荐关注「Python开发者」,提升Python技能

点赞和在看就是最大的支持❤️

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/106218
 
35 次点击  
分享到微博