PHP 用于机器学习:实践中的可能性与局限性

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

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

开始课程

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

说到机器学习(ML),首先想到的是Python、R或Julia。PHP传统上与Web开发和后端相关联。然而,随着生态系统的发展和专门库的出现,PHP开始宣称在ML任务中发挥作用,尤其是在与现有Web应用集成的背景下。本文将分析PHP在机器学习方面的适用性、现有库以及其使用合理与否的场景。



主要的PHP机器学习库

尽管存在刻板印象,PHP确实有几个成熟的ML库。让我们看看三个关键工具。



Rubix ML

最强大、最现代的库。支持完整的ML流程:从数据预处理到模型训练和导出。包含数十种算法:回归、分类、聚类、神经网络。

use Rubix\\ML\\Classifiers\\KNearestNeighbors;use Rubix\\ML\\Datasets\\Labeled;use Rubix\\ML\\Extractors\\CSV;

// Loading data from CSV$dataset = Labeled::fromIterator(new CSV('data.csv', true));

// Creating and training the model$estimator = new KNearestNeighbors(3);$estimator->train($dataset);

// Prediction$prediction = $estimator->predict([5.1, 3.5, 1.4, 0.2]);echo "Class: $prediction";


PHP-ML (PHP机器学习)

一个较轻量级的库,专注于简单任务。支持回归、分类、聚类和关联规则。

use Phpml\\Classification\\NaiveBayes;use Phpml\\Dataset\\ArrayDataset;

$samples = [[1, 2], [2, 3], [3, 1], [4, 2]];$labels = ['a', 'a', 'b', 'b'];

$classifier = new NaiveBayes();$classifier->train($samples, $labels);

echo $classifier->predict([2, 2]); // 'a'


TensorFlow PHP

TensorFlow的封装,允许加载和运行预训练模型。不支持在PHP中进行训练,但非常适合推理。

use TensorFlow\\Tensor;use TensorFlow\\Session;

$session = new Session();$model = $session->loadModel('model.pb');

$input = Tensor::fromArray([[0.5, 0.3]]);$output = $session->run(['output' => $model['output']], ['input' => $input]);

print_r($output);


PHP在ML中的实际用例

PHP不会在数据科学领域取代Python,但在某些领域它更便利。



1. 将ML嵌入现有Web应用

如果你已经有基于Laravel或Symfony的网站,在PHP中添加ML功能比单独设置Python微服务更简单。例如,在线商店的推荐系统:

use Rubix\\ML\\PersistentModel;use Rubix\\ML\\Persisters\\FilePersister;

// Loading a trained model$estimator = PersistentModel::load(new FilePersister('model.rbx'));

// Get current user data$userFeatures = [$age, $gender, $avgOrderValue];$recommendedCategory = $estimator->predict($userFeatures);

echo "Recommended category: $recommendedCategory";


2. 文本处理与自然语言处理

PHP-ML提供了处理文本的工具:TF-IDF、词干提取、分类。垃圾邮件过滤示例:

use Phpml\\FeatureExtraction\\TfIdfTransformer;use Phpml\\Tokenization\\WhitespaceTokenizer;

$samples = ['free gift', 'meeting tomorrow', 'buy now'];$tokenizer = new WhitespaceTokenizer();$transformer = new TfIdfTransformer();

$vectorized = [];foreach ($samples as $text) { $vectorized[] = $tokenizer->tokenize($text);}$transformer->fit($vectorized);$transformer->transform($vectorized);


3. 简单聚类与细分

根据行为将客户分组是常见的营销任务。Rubix ML

博客

书籍推荐