Files
2026-07-13 10:35:03 +00:00

10 KiB
Raw Permalink Blame History

Note

本文档由 WeHub 基于上游 README 翻译整理,属于社区翻译,非官方中文文档。
English · 原始项目 · 上游 README
原作者、版权与许可证归属以原始项目及本仓库 LICENSE 文件为准。

Homemade Machine Learning

🇺🇦 乌克兰 正遭受攻击,俄罗斯军队正在发动袭击。平民正在遇害,居民区正在遭受轰炸。


Binder

其他语言版本: Español

你可能还会感兴趣:

如需 Octave/MatLab 版本,请查看 machine-learning-octave 项目。

本仓库包含用 Python 实现的流行机器学习算法示例,并附有背后的数学原理说明。每个算法都配有交互式 Jupyter Notebook 演示,让你可以调整训练数据与算法配置,并立即在浏览器中查看结果、图表和预测。多数讲解基于 Andrew Ng 的 这门优秀的机器学习课程

本仓库的目的 并非 借助第三方库的一行代码来实现机器学习算法,而是 从零开始练习实现这些算法,从而更深入理解每种算法背后的数学原理。因此,所有算法实现都称为“homemade”(自制),并不打算用于生产环境。

监督学习(Supervised Learning

在监督学习中,我们有一组训练数据作为输入,以及对应每组训练数据的标签或“正确答案”作为输出。随后我们训练模型(机器学习算法的参数),使其能够正确地将输入映射到输出(做出正确预测)。最终目标是找到这样的模型参数,使其即使面对新的输入样本,也能持续正确地进行 输入→输出 映射(预测)。

回归(Regression

在回归问题中,我们进行实数值预测。本质上,我们尝试沿着训练样本拟合一条直线、一个平面或 n 维超平面。

使用示例:股价预测、销售分析、任意数值之间的依赖关系等。

🤖 线性回归(Linear Regression

分类(Classification

在分类问题中,我们根据某种特征将输入样本划分到不同类别。

使用示例:垃圾邮件过滤、语言检测、查找相似文档、手写字符识别等。

🤖 逻辑回归(Logistic Regression

无监督学习(Unsupervised Learning

无监督学习是机器学习的一个分支,它从未标注、未分类或未归类的测试数据中学习。与响应反馈不同,无监督学习会识别数据中的共性,并根据每条新数据中是否存在此类共性来做出反应。

聚类(Clustering

在聚类问题中,我们根据未知特征将训练样本划分到不同群组。算法本身会决定使用哪种特征进行划分。

使用示例:市场细分、社交网络分析、计算集群组织、天文数据分析、图像压缩等。

🤖 K-means 算法

异常检测(Anomaly Detection

异常检测(也称离群点检测)用于识别与数据中大多数样本显著不同、因而值得怀疑的罕见项、事件或观测值。

使用示例:入侵检测、欺诈检测、系统健康监控、从数据集中移除异常数据等。

🤖 基于高斯分布的异常检测(Anomaly Detection using Gaussian Distribution

神经网络(Neural Network, NN

神经网络本身并非一种算法,而是一种框架,让多种不同的机器学习算法协同工作,以处理复杂的输入数据。

使用示例:总体上可替代其他各类算法、图像识别、语音识别、图像处理(应用特定风格)、语言翻译等。

🤖 多层感知机(Multilayer Perceptron, MLP

机器学习图谱

机器学习图谱

以下机器学习主题图谱的来源是这篇精彩的博客文章

前置要求

安装 Python

请确保你的机器上已安装 Python on your machine.

你可能想使用 venv standard Python library 来创建虚拟环境,让 Python、pip 以及所有依赖包从本地项目目录安装并运行, 从而避免干扰系统级软件包及其版本。

安装依赖

运行以下命令来安装项目所需的全部依赖:

pip install -r requirements.txt

在本地启动 Jupyter

项目中的所有演示都可以直接在浏览器中运行,无需在本地安装 Jupyter。但若要在本地启动 Jupyter Notebook locally you may do it by running the following command from the root folder of the project:

jupyter notebook

之后,可通过 http://localhost:8888 访问 Jupyter Notebook。

远程启动 Jupyter

每个算法章节都包含指向 Jupyter NBViewer. 的演示链接。这是一款快速的 Jupyter 笔记本(Jupyter notebooks)在线预览工具,你可以在浏览器中直接查看演示代码、图表和数据,而无需在本地安装任何内容。如果你想_修改_代码并在演示笔记本上_实验_,则需要在 Binder. 中启动该笔记本。只需点击 NBViewer 右上角的 "Execute on Binder" 链接即可。

数据集

Jupyter Notebook 演示所使用的数据集列表可在 data 文件夹 中找到。

支持本项目

你可以通过 ❤️ GitHub❤️ Patreon. 支持本项目。

作者