社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

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

小白学视觉 • 3 年前 • 316 次点击  

点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

来自于加州伯克利大学的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

下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/125880
 
316 次点击