PHP用于机器学习:功能、库与局限性

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

PHP 用于机器学习:现实还是神话?



当谈到机器学习(ML)时,首先想到的往往是 Python、R 或 Julia。传统上与 Web 开发和后端相关联的 PHP,似乎并不适合数据科学任务。然而,随着 ML 的普及和专用库的出现,PHP 开始逐渐涉足这一领域。在本文中,我们将探讨 PHP 在多大程度上适用于机器学习,存在哪些工具,以及它的应用在哪些场景下是合理的,哪些则不然。



PHP 机器学习的主要库



尽管 PHP 的 ML 生态系统远不及 Python,但仍存在几个成熟的库可以解决基本任务。让我们看看最流行的两个。



PHP-ML (PHP Machine Learning)

这是第一个也是最著名的 PHP 机器学习库。它提供了广泛的算法和工具,用于分类、回归、聚类和数据预处理。



PHP-ML 的主要功能:

  • 分类:Naive Bayes、SVM(Support Vector Machine)、K-Nearest Neighbors(KNN)。
  • 回归:Linear Regression、Least Squares。
  • 聚类:K-Means、DBSCAN。
  • 评估指标:Accuracy、Confusion Matrix、F1 Score。
  • 神经网络支持(实验性)。


示例:使用 KNN 对 Fisher 鸢尾花进行分类

<?phprequire_once __DIR__ . '/vendor/autoload.php';

use Phpml\\Classification\\KNearestNeighbors;use Phpml\\Dataset\\Demo\\IrisDataset;

// 加载演示数据集$dataset = new IrisDataset();$samples = $dataset->getSamples();$labels = $dataset->getTargets();

// 创建并训练分类器(K=3)$classifier = new KNearestNeighbors(3);$classifier->train($samples, $labels);

// 预测新样本(花萼长度,花萼宽度,花瓣长度,花瓣宽度)$newSample = [5.1, 3.5, 1.4, 0.2];$predicted = $classifier->predict($newSample);

echo "预测的类别: " . $predicted; // 输出: Iris-setosa?>


Rubix ML

一个更现代、更强大的库,定位为“PHP 机器学习框架”。Rubix ML 支持完整的流水线:从数据加载到模型部署。它采用面向对象的方法,并内置了对神经网络的支持。



Rubix ML 的主要特点:

  • 广泛的算法集:Logistic Regression、Random Forest、Gradient Boost、MLP(多层感知器)。
  • 处理分类数据(One Hot Encoder)。
  • 交叉验证和超参数调整。
  • 保存和加载训练好的模型。


示例:使用 Rubix ML 进行线性回归

<?phprequire_once __DIR__ . '/vendor/autoload.php';

use Rubix\\ML\\Regressors\\Ridge;use Rubix\\ML\\Datasets\\Labeled;use Rubix\\ML\\CrossValidation\\Metrics\\RMSE;

// 准备数据(X - 房屋面积,y - 价格)$samples = [[800], [1200], [1500], [2000], [2500]];$labels = [150000, 210000, 250000, 320000, 400000];

$dataset = new Labeled($samples, $labels);

// 创建并训练 Ridge 回归模型$estimator = new Ridge(1.0);$estimator->train($dataset);

// 预测$newHouse = [[1800]];$predictedPrice = $estimator->predict($newHouse);

echo "预测价格: $" . number_format($predictedPrice[0], 2);// 输出: 预测价格: $289,000.00(大约)?>


PHP 在 ML 背景下的优势



尽管 PHP 不是数据科学语言,但它有几个优点,在某些场景下可能很有用:



  • 易于与 Web 集成: PHP 是 Web 开发的核心语言。如果你已经有一个基于 PHP 的 Web 应用程序(例如,基于 Laravel 或 Symfony),添加 ML 功能无需切换到另一种语言。你可以直接在 PHP 中训练模型或进行预测,而无需设置额外的微服务。
  • 低入门门槛: 对于熟悉 PHP 的 Web 开发者来说,开始使用 ML 比学习 Python 及其生态系统(NumPy、Pandas、Scikit-learn)要容易得多。PHP-ML 和 Rubix ML 的 API 直观且符合 PHP 开发者的习惯。
  • 快速原型设计: 对于简单的任务(例如,基于少量数据的分类或回归),PHP 可以让你快速创建原型并直接在 Web 界面中测试结果。

博客

书籍推荐