ML
PHP 语言高性能机器学习库,支持分类、聚类、深度学习等多算法
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
PHP 语言高性能机器学习库,支持分类、聚类、深度学习等多算法
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
2018年,当大多数 PHP 开发者还在用 JavaScript 或 Python 处理机器学习需求时,一位名叫(社区昵称)的开发者提出了一个问题:为什么 PHP 程序员必须离开自己的技术栈才能用上 ML?
这个问题的答案并不复杂——历史上,PHP 的强项在于 Web 后端渲染和数据库操作,而 ML 领域长期被 Python 生态垄断。但 PHP 拥有全球最庞大的 Web 开发者群体,其中大量业务逻辑已经深度绑定 PHP 生态。在某些场景下,换语言的成本远高于自己造一个轮子。 Rubix ML 就是在这种背景下诞生的。
Rubix ML 是一个免费开源的高层次机器学习和深度学习库,完全使用 PHP 语言实现。它的目标不是替代 Python 的 scikit-learn,而是为 PHP 开发者提供一条无需切换语言的 ML 入门路径。
从功能覆盖角度看,Rubix ML 相当全面:

上图展示了 Rubix ML 内置可视化工具对经典鸢尾花(Iris)数据集进行二维投影的效果,不同颜色代表不同品种分类。
Rubix ML 的架构遵循经典的 ML 流水线(Pipeline)设计模式。整个流程分为以下几个核心阶段:
数据表示层:库定义了 Dataset 对象作为数据容器,支持有标签数据(Labeled Dataset)和无标签数据(Unlabeled Dataset)。数据集可以被缓存、分片、随机打乱,支持 CSV、JSON、NDJSON 等多种格式读取。
模型层(Estimator):所有学习算法(分类器、回归器、聚类器、异常检测器)都实现了统一的 Estimator 接口。这一设计让不同算法之间的切换变得异常简单——只需实例化一个新的 Estimator,接口完全兼容。
流水线(Pipeline):这是 Rubix ML 最实用的设计之一。Pipeline 允许将多个 Transformer 和一个 Estimator 串联起来,一次性完成数据预处理 + 模型训练/预测。这避免了训练集和测试集预处理不一致的常见错误。
$pipeline = new Pipeline([
new MinMaxNormalizer(), // 数值归一化
new OneHotEncoder(), // 类别编码
new PCA(2), // 降维到2维
], new LogisticRegression());
$pipeline->train($dataset);
$predictions = $pipeline->predict($testDataset);
持久化层:训练好的模型可以通过 PHP 原生序列化(Serializer)保存到磁盘,部署时直接加载推理,无需重新训练。

这是一个必须认真回答的问题。
Rubix ML 的优势场景:
Rubix ML 的明显短板:
composer require rubix/ml
一个完整的鸢尾花分类示例(数据来自 Rubix ML 内置数据集):
use Rubix\ML\Classifiers\KNearestNeighbors;
use Rubix\ML\Datasets\Labeled;
use Rubix\ML\Kernels\Distance\Euclidean;
// 加载数据
$dataset = Labeled::fromIterator(new CSV('iris.csv'));
// 划分训练/测试集
[$training, $testing] = $dataset->stratifiedSplit(0.8);
// 训练模型
$estimator = new KNearestNeighbors(5, new Euclidean());
$estimator->train($training);
// 预测
$predictions = $estimator->predict($testing);
// 评估
$report = new Report();
echo $report->generate($testing->labels(), $predictions);

Rubix ML 的野心不止于一个库。围绕核心 ML 库,官方维护了一个完整的配套生态:
| 配套项目 | 说明 |
|---|---|
| Tensor | PHP 原生张量库,底层加速矩阵运算 |
| Extras | 额外的评估器、工具函数 |
| Persist | 模型持久化增强 |
| A PHP-ML | 另一个 PHP ML 库(已停止维护),Rubix ML 吸取了其经验 |
官方还提供了 12+ 个教程项目,覆盖图像识别(MNIST、CIFAR-10)、文本情感分析、游戏结果预测等真实场景,每个教程都附带预处理好的数据集。
必须指出 Rubix ML 的几个现实问题:
Rubix ML 的存在本身就是一个有意义的信号:它证明了机器学习的工具民主化正在从 Python 单一生态向外扩散。尽管它不会成为主流 ML 框架,但对于 PHP 开发者群体而言,这意味着一个完整的、从数据到预测的闭环可以在单一技术栈内完成。
在中小企业 PHP SaaS 应用中,当 ML 需求规模不大(如月活用户 <10 万的推荐系统、内部工单分类)时,Rubix ML 提供了一个无需引入 Python 基础设施的务实选择。