使用 Python 进行自制机器学习

我最近推出了一个自制机器学习库,其中包含用Python实现的流行机器学习算法和方法(例如线性/逻辑回归、K 均值聚类、神经网络)的示例,并解释了其背后的数学原理。每个算法都提供了交互式的Jupyter Notebook演示,方便你使用训练数据和算法配置,并立即在浏览器中查看结果、图表和预测。大多数情况下,这些解释都基于吴恩达的这门优秀的机器学习课程。
该代码库的目的并非使用第三方库的“单行代码”来实现机器学习算法,而是从零开始练习实现这些算法,并更好地理解每个算法背后的数学原理。因此,所有算法的实现都被称为“自制”。
主要使用的 Python 库是NumPy和Pandas。这两个库用于高效的矩阵运算以及加载/解析 CSV 数据集。在Jupyter Notebook演示中, Matplotlib和Plotly等库用于数据可视化。
目前已涵盖以下主题:
回归:线性回归
在回归问题中,我们进行实数预测。基本上,我们尝试沿着训练样本绘制一条线/平面/n维平面。
使用示例:股票价格预测、销售分析、任意数字的依赖关系等。
- 📗线性回归数学 — 理论和进一步阅读的链接
- ⚙️线性回归实现示例
- ▶️演示 | 单变量线性回归 —
country happiness
通过以下方式预测得分economy GDP
- ▶️演示 | 多元线性回归 —通过和预测
country happiness
分数economy GDP
freedom index
- ▶️演示 | 非线性回归——使用具有多项式和正弦特征 的线性回归来预测非线性依赖关系。
分类:逻辑回归
在分类问题中,我们根据某些特征来划分输入示例。
使用示例:垃圾邮件过滤器、语言检测、查找类似文档、手写字母识别等。
- 📗逻辑回归数学 — 理论和进一步阅读的链接
- ⚙️逻辑回归实现示例
- ▶️演示 | 逻辑回归(线性边界)
class
—根据petal_length
和 预测鸢尾花petal_width
- ▶️演示 | 逻辑回归(非线性边界) —
validity
根据param_1
和预测微芯片param_2
- ▶️演示 | 多元逻辑回归
28x28
——从像素图像 中识别手写数字。
聚类:K均值算法
在聚类问题中,我们根据未知特征对训练样本进行划分。算法本身决定使用什么特征进行划分。
使用示例:市场细分、社交网络分析、组织计算集群、天文数据分析、图像压缩等。
- 📗 K-means 算法数学 — 理论和进一步阅读的链接
- ⚙️ K-means 算法实现示例
- ▶️演示 | K-means 算法
petal_length
— 根据和 将 鸢尾花分成簇petal_width
神经网络:多层感知器(MLP)
神经网络本身不是一种算法,而是一个供许多不同的机器学习算法协同工作并处理复杂数据输入的框架。
使用示例:作为所有其他算法的替代,图像识别,语音识别,图像处理(应用特定风格),语言翻译等。
- 📗多层感知器数学 — 理论和进一步阅读的链接
- ⚙️多层感知器实现示例
- ▶️演示 | 多层感知器
28x28
——从像素图像 中识别手写数字。
异常检测:高斯分布
异常检测(也称为离群值检测)是识别与大多数数据有显著差异而引起怀疑的罕见项目、事件或观察结果。
使用示例:入侵检测、欺诈检测、系统健康监控、从数据集中删除异常数据等。
— — — — — — — — —
希望您觉得这个代码库有用。无论是尝试演示、阅读数学部分,还是简单地探索源代码,都可以。祝您编程愉快!
文章来源:https://dev.to/trekhleb/homemade-machine-learning-in-python-4gbj