PHP用于机器学习:初学者的可能性与局限性

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

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

开始课程

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



机器学习(ML)的世界通常与Python、R和Julia紧密相连。然而,使用PHP(最流行的Web开发语言之一)的开发者们常常会问:“PHP能用于机器学习吗?”答案是:可以,但有一些限制。在本文中,我们将分析有哪些可用的库,如何用PHP编写一个简单的ML模型,以及在哪些情况下这样做是合理的。



本文面向已经熟悉PHP基础并希望在不切换技术栈的情况下尝试机器学习的初学者。



PHP机器学习的主要库



PHP的ML生态系统不如Python丰富,但仍然存在一些成熟的库。让我们看看最流行的几个。



PHP-ML (PHP Machine Learning)



PHP-ML 是最流行且积极维护的库。它提供了广泛的算法:分类、回归、聚类、数据预处理,甚至神经网络。



通过Composer安装的示例:



composer require php-ai/php-ml


使用支持向量机(SVM)进行简单分类的示例:



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

use Phpml\\Classification\\SVC;use Phpml\\SupportVectorMachine\\Kernel;

// 训练数据:[重量,颜色] 0 - 绿色,1 - 红色$samples = [[150, 0], [170, 0], [130, 1], [180, 1]];$labels = ['苹果', '苹果', '番茄', '番茄'];

$classifier = new SVC(Kernel::LINEAR, $cost = 1000);$classifier->train($samples, $labels);

// 预测echo $classifier->predict([160, 0]); // 苹果echo $classifier->predict([140, 1]); // 番茄?>


TensorFlow PHP



存在一个官方的TensorFlow绑定——TensorFlow PHP。它允许加载预训练模型并执行推理(预测)。但它不适合从头开始训练模型——这需要在Python中完成,而PHP仅用于生产部署。



加载模型并进行预测的示例:



<?phprequire_once 'vendor/autoload.php';

use TensorFlow\\TensorFlow;use TensorFlow\\Session;use TensorFlow\\Graph;

$graph = new Graph();$graph->importGraphDef(file_get_contents('model.pb'));

$session = new Session($graph);$input = $session->input('input_tensor');$output = $session->output('output_tensor');

$result = $session->run([$input => [[1.0, 2.0, 3.0]]]);print_r($result);?>


Rubix ML



Rubix ML 是一个现代库,旨在复制scikit-learn的功能。它支持管道、交叉验证和多种算法。适用于更复杂的项目。



线性回归示例:



<?phprequire_once 'vendor/autoload.php';

use Rubix\\ML\\Regressors\\Ridge;use Rubix\\ML\\Datasets\\Labeled;

$samples = [[1], [2], [3], [4]];$labels = [2, 4, 6, 8];

$dataset = new Labeled($samples, $labels);$estimator = new Ridge();$estimator->train($dataset);

echo $estimator->predict([[5]]); // ~10?>


PHP在机器学习中的局限性



尽管有这些库,PHP仍有一些根本性的限制,使其不是ML的最佳选择。



性能和类型系统



PHP是一种动态类型的解释型语言。对于数学计算来说,这很慢。在Python中,这个问题通过基于C的库(NumPy、SciPy)在底层运行来解决。在PHP中,几乎没有这样优化的数学包。所有操作都在PHP代码中执行,这对于大型数据集来说是关键问题。



缺乏数据科学生态系统



在Python中,有J

博客

书籍推荐