Home
Login

第二阶段:经典机器学习

用Python从零实现机器学习基础模型和算法的教育项目,涵盖从线性回归到深度学习的各种算法,注重算法内部工作机制的透明展示

MachineLearningPythonNumPyGitHubTextFreeEnglish

ML-From-Scratch 项目详细介绍

项目概述

ML-From-Scratch 是一个用Python从零开始实现机器学习基础模型和算法的项目。这个项目的目的不是为了产生最优化和计算效率最高的算法,而是以透明和易于理解的方式展示算法的内部工作原理。

项目作者

项目作者Erik Linder-Norén是苹果公司的机器学习工程师,对机器学习、篮球和构建事物充满热情。

项目特点

1. 教育导向

  • 注重算法内部工作机制的透明展示
  • 代码实现清晰易懂,便于学习和理解
  • 提供丰富的示例和可视化结果

2. 技术栈

  • 主要语言: Python
  • 核心依赖: NumPy(用于数值计算)
  • 可视化: Matplotlib(用于绘图展示)

3. 覆盖范围广泛

从线性回归到深度学习,涵盖机器学习的各个重要领域

安装和使用

安装步骤

$ git clone https://github.com/eriklindernoren/ML-From-Scratch
$ cd ML-From-Scratch
$ python setup.py install

运行示例

# 多项式回归示例
$ python mlfromscratch/examples/polynomial_regression.py

# 卷积神经网络示例
$ python mlfromscratch/examples/convolutional_neural_network.py

# DBSCAN聚类示例
$ python mlfromscratch/examples/dbscan.py

实现的算法分类

监督学习算法

  • Adaboost: 自适应提升算法
  • Bayesian Regression: 贝叶斯回归
  • Decision Tree: 决策树
  • Elastic Net: 弹性网络回归
  • Gradient Boosting: 梯度提升
  • K Nearest Neighbors: K近邻算法
  • Lasso Regression: Lasso回归
  • Linear Discriminant Analysis: 线性判别分析
  • Linear Regression: 线性回归
  • Logistic Regression: 逻辑回归
  • Multi-class Linear Discriminant Analysis: 多类线性判别分析
  • Multilayer Perceptron: 多层感知器
  • Naive Bayes: 朴素贝叶斯
  • Neuroevolution: 神经进化
  • Particle Swarm Optimization of Neural Network: 粒子群优化神经网络
  • Perceptron: 感知器
  • Polynomial Regression: 多项式回归
  • Random Forest: 随机森林
  • Ridge Regression: 岭回归
  • Support Vector Machine: 支持向量机
  • XGBoost: 极端梯度提升

无监督学习算法

  • Apriori: 关联规则挖掘
  • Autoencoder: 自编码器
  • DBSCAN: 基于密度的聚类算法
  • FP-Growth: 频繁模式增长算法
  • Gaussian Mixture Model: 高斯混合模型
  • Generative Adversarial Network: 生成对抗网络
  • Genetic Algorithm: 遗传算法
  • K-Means: K均值聚类
  • Partitioning Around Medoids: 围绕中心点的分割
  • Principal Component Analysis: 主成分分析
  • Restricted Boltzmann Machine: 受限玻尔兹曼机

深度学习组件

  • Neural Network: 神经网络框架
  • 各种层类型:
    • Activation Layer(激活层)
    • Average Pooling Layer(平均池化层)
    • Batch Normalization Layer(批标准化层)
    • Constant Padding Layer(常量填充层)
    • Convolutional Layer(卷积层)
    • Dropout Layer(Dropout层)
    • Flatten Layer(展平层)
    • Fully-Connected (Dense) Layer(全连接层)
    • Fully-Connected RNN Layer(全连接RNN层)
    • Max Pooling Layer(最大池化层)
    • Reshape Layer(重塑层)
    • Up Sampling Layer(上采样层)
    • Zero Padding Layer(零填充层)

示例运行结果

1. 卷积神经网络示例

+---------+
| ConvNet |
+---------+
Input Shape: (1, 8, 8)
+----------------------+------------+--------------+
| Layer Type           | Parameters | Output Shape |
+----------------------+------------+--------------+
| Conv2D              | 160        | (16, 8, 8)   |
| Activation (ReLU)   | 0          | (16, 8, 8)   |
| Dropout             | 0          | (16, 8, 8)   |
| BatchNormalization  | 2048       | (16, 8, 8)   |
| Conv2D              | 4640       | (32, 8, 8)   |
| Activation (ReLU)   | 0          | (32, 8, 8)   |
| Dropout             | 0          | (32, 8, 8)   |
| BatchNormalization  | 4096       | (32, 8, 8)   |
| Flatten             | 0          | (2048,)      |
| Dense               | 524544     | (256,)       |
| Activation (ReLU)   | 0          | (256,)       |
| Dropout             | 0          | (256,)       |
| BatchNormalization  | 512        | (256,)       |
| Dense               | 2570       | (10,)        |
| Activation (Softmax)| 0          | (10,)        |
+----------------------+------------+--------------+
Total Parameters: 538570

Training: 100% [------------------------------------------------------------------------] Time: 0:01:55
Accuracy: 0.987465181058

2. 深度Q网络示例

+----------------+
| Deep Q-Network |
+----------------+
Input Shape: (4,)
+-------------------+------------+--------------+
| Layer Type        | Parameters | Output Shape |
+-------------------+------------+--------------+
| Dense             | 320        | (64,)        |
| Activation (ReLU) | 0          | (64,)        |
| Dense             | 130        | (2,)         |
+-------------------+------------+--------------+
Total Parameters: 450

3. 神经进化示例

+---------------+
| Model Summary |
+---------------+
Input Shape: (64,)
+----------------------+------------+--------------+
| Layer Type           | Parameters | Output Shape |
+----------------------+------------+--------------+
| Dense                | 1040       | (16,)        |
| Activation (ReLU)    | 0          | (16,)        |
| Dense                | 170        | (10,)        |
| Activation (Softmax) | 0          | (10,)        |
+----------------------+------------+--------------+
Total Parameters: 1210

Population Size: 100
Generations: 3000
Mutation Rate: 0.01
[0 Best Individual - Fitness: 3.08301, Accuracy: 10.5%]
[1 Best Individual - Fitness: 3.08746, Accuracy: 12.0%]
...
[2999 Best Individual - Fitness: 94.08513, Accuracy: 98.5%]
Test set accuracy: 96.7%

学习价值

1. 深度理解算法原理

  • 通过从零实现,可以深入理解每个算法的核心思想
  • 代码结构清晰,有助于理解算法的具体实现细节

2. 实践编程技能

  • 提升NumPy等科学计算库的使用技能
  • 学习如何将数学理论转化为代码实现

3. 研究和开发基础

  • 为进一步的算法研究和改进提供基础
  • 有助于理解现有机器学习框架的底层实现

适用人群

  • 机器学习初学者和中级学习者
  • 希望深入理解算法内部机制的研究人员
  • 想要提升编程实现能力的开发者
  • 机器学习相关专业的学生

项目优势

  1. 教育性强: 代码清晰易懂,注重教学价值
  2. 覆盖面广: 从基础到高级算法应有尽有
  3. 实用性强: 提供完整的可运行示例
  4. 持续更新: 项目活跃,不断添加新的算法实现

注意事项

  • 该项目主要用于教学和学习,不适合生产环境使用
  • 算法实现注重可读性而非性能优化
  • 建议结合理论学习使用,效果更佳