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

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

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

开始课程

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

\n\n

许多开发者习惯认为机器学习是Python、R或Julia的专属领域。然而在实践中,尽管PHP有着"网页语言"的声誉,它同样可以用于解决ML任务,尤其是在与现有Web应用集成的场景下。在本文中,我们将分析PHP在机器学习中的真实可能性,展示使用流行库的代码示例,并诚实地讨论其局限性。

\n\n

PHP机器学习的主要库

\n\n

PHP的ML生态系统不如Python丰富,但有几个成熟的库值得关注。

\n\n

PHP-ML (php-ml/php-ml)

\n

这是PHP中最流行的机器学习库。它提供了经典算法:分类、回归、聚类、关联规则,甚至神经网络。

\n\n
require_once __DIR__ . '/vendor/autoload.php';\n\nuse Phpml\\Classification\\KNearestNeighbors;\nuse Phpml\\Dataset\\ArrayDataset;\nuse Phpml\\Metric\\Accuracy;\n\n// 训练数据:[长度, 宽度] -> 标签(0 - 猫, 1 - 狗)\n$samples = [[1, 2], [2, 3], [3, 4], [5, 6], [6, 7], [7, 8]];\n$labels = [0, 0, 0, 1, 1, 1];\n\n$classifier = new KNearestNeighbors($k = 3);\n$classifier->train($samples, $labels);\n\n// 对新样本进行预测\n$prediction = $classifier->predict([4, 5]);\necho "预测标签:" . ($prediction == 0 ? "猫" : "狗") . PHP_EOL;\n\n// 评估准确率\n$testSamples = [[2.5, 3.5], [6.5, 7.5]];\n$testLabels = [0, 1];\n$predictions = $classifier->predict($testSamples);\n$accuracy = Accuracy::score($testLabels, $predictions);\necho "准确率:" . ($accuracy * 100) . "%" . PHP_EOL;\n
\n\n

Rubix ML (rubix/ml)

\n

一个更现代、更先进的库,支持深度学习、神经网络、集成方法和数据管道。与PHP-ML不同,Rubix ML正在积极开发中,并拥有企业级文档。

\n\n
require_once __DIR__ . '/vendor/autoload.php';\n\nuse Rubix\\ML\\Classifiers\\KNearestNeighbors;\nuse Rubix\\ML\\Datasets\\Labeled;\nuse Rubix\\ML\\CrossValidation\\Reports\\AggregateReport;\nuse Rubix\\ML\\CrossValidation\\Reports\\ConfusionMatrix;\nuse Rubix\\ML\\CrossValidation\\Reports\\MulticlassBreakdown;\n\n// 创建数据集\n$samples = [\n    [1.2, 2.3, 0.8],\n    [3.4, 5.6, 1.2],\n    [7.8, 9.0, 3.4],\n    [2.1, 4.3, 1.5],\n];\n$labels = ['A', 'B', 'A', 'B'];\n\n$dataset = new Labeled($samples, $labels);\n\n// 训练分类器\n$estimator = new KNearestNeighbors(3);\n$estimator->train($dataset);\n\n// 进行预测\n$predictions = $estimator->predict([\n    [2.0, 3.0, 1.0],\n    [6.0, 8.0, 2.5],\n]);\n\necho "预测结果:" . implode(', ', $predictions) . PHP_EOL;\n\n// 评估\n$report = new AggregateReport([\n    new MulticlassBreakdown(),\n    new ConfusionMatrix(),\n]);\n$results = $report->generate($predictions, ['A', 'B']);\nprint_r($results);\n
\n\n

PHP用于ML的实用场景

\n\n

在实践中,PHP在以下场景中可能很有用:

\n\n
    \n
  • 将ML集成到现有Web应用中 — 如果你已经有一个基于Laravel或Symfony的网站,你可以添加简单的分类或回归模型,而无需重写后端。
  • \n
  • 简单的文本处理 — 情感分析、垃圾邮件过滤器、新闻分类。
  • \n
  • 推荐系统 — 基于购买或浏览数据的协同过滤。
  • \n
  • 异常检测与监控 — 实时检测用户异常行为。
  • \n
\n\n

基于PHP-ML的简单垃圾邮件过滤器示例:

\n\n
use Phpml\\Classification\\NaiveBayes;\nuse Phpml\\FeatureExtraction\\TfIdfTransformer;\nuse Phpml\\Tokenization\\WhitespaceTokenizer;\nuse Phpml\\FeatureExtraction\\                

博客

书籍推荐