PHP用于机器学习:神话还是现实?
\n\n许多开发者习惯认为机器学习是Python、R或Julia的专属领域。然而在实践中,尽管PHP有着"网页语言"的声誉,它同样可以用于解决ML任务,尤其是在与现有Web应用集成的场景下。在本文中,我们将分析PHP在机器学习中的真实可能性,展示使用流行库的代码示例,并诚实地讨论其局限性。
\n\nPHP机器学习的主要库
\n\nPHP的ML生态系统不如Python丰富,但有几个成熟的库值得关注。
\n\nPHP-ML (php-ml/php-ml)
\n这是PHP中最流行的机器学习库。它提供了经典算法:分类、回归、聚类、关联规则,甚至神经网络。
\n\nrequire_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\nRubix ML (rubix/ml)
\n一个更现代、更先进的库,支持深度学习、神经网络、集成方法和数据管道。与PHP-ML不同,Rubix ML正在积极开发中,并拥有企业级文档。
\n\nrequire_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\nPHP用于ML的实用场景
\n\n在实践中,PHP在以下场景中可能很有用:
\n\n- \n
- 将ML集成到现有Web应用中 — 如果你已经有一个基于Laravel或Symfony的网站,你可以添加简单的分类或回归模型,而无需重写后端。 \n
- 简单的文本处理 — 情感分析、垃圾邮件过滤器、新闻分类。 \n
- 推荐系统 — 基于购买或浏览数据的协同过滤。 \n
- 异常检测与监控 — 实时检测用户异常行为。 \n
基于PHP-ML的简单垃圾邮件过滤器示例:
\n\nuse Phpml\\Classification\\NaiveBayes;\nuse Phpml\\FeatureExtraction\\TfIdfTransformer;\nuse Phpml\\Tokenization\\WhitespaceTokenizer;\nuse Phpml\\FeatureExtraction\\