PHP机器学习:集成ML的库概览

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

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

开始课程

PHP机器学习:现实还是妥协?



传统上,机器学习(ML)与Python、R或Julia相关联。然而,PHP作为最流行的Web开发语言之一,也拥有ML库生态系统。使用PHP进行机器学习是一种妥协:与Python相比,你在性能和现成模型数量上有所损失,但获得了与Web应用的无缝集成、统一的技术栈,以及无需启动微服务即可快速实现简单ML算法的能力。



在本文中,我们将介绍PHP机器学习的主要库、它们的功能和使用示例。



1. PHP-ML (PHP Machine Learning)



PHP-ML 是最流行的PHP ML库。它不需要外部依赖,完全用PHP编写。实现了经典算法:分类、回归、聚类、降维和评估指标。



功能:

  • 分类:Naive Bayes、SVM、k-Nearest Neighbors、Decision Tree
  • 回归:Linear Regression、SVR
  • 聚类:k-Means、DBSCAN
  • 数据预处理:归一化、标准化
  • 指标:accuracy、precision、recall、F1-score


示例:Fisher鸢尾花分类

require_once __DIR__ . '/vendor/autoload.php';

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

$dataset = new IrisDataset();$samples = $dataset->getSamples();$labels = $dataset->getTargets();

$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'


2. Rubix ML



Rubix ML 是一个更现代、更强大的库。与PHP-ML不同,它支持神经网络、梯度提升、集成方法以及通过生成器(惰性求值)处理大型数据集。



特点:

  • 神经网络(多层感知器、通过转换的CNN)
  • 集成方法:Random Forest、Gradient Boosted Trees
  • 数据处理管道(pipelines)
  • 支持分类特征和One-Hot编码
  • 以PHP序列化格式导出模型


示例:带管道的线性回归

require_once __DIR__ . '/vendor/autoload.php';

use Rubix\\ML\\Datasets\\Labeled;use Rubix\\ML\\Regressors\\Ridge;use Rubix\\ML\\Transformers\\NumericStringConverter;use Rubix\\ML\\Transformers\\MinMaxNormalizer;use Rubix\\ML\\Pipeline;

// 创建数据集$samples = [[1], [2], [3], [4], [5]];$labels = [1.5, 2.8, 4.1, 5.9, 7.2];

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

// 创建管道$estimator = new Pipeline([ new NumericStringConverter(), new MinMaxNormalizer(),], new Ridge(1.0));

$estimator->train($dataset);

// 预测$prediction = $estimator->predict([[6]]);echo "预测值: " . $prediction[0]; // ~8.3


3. Keras PHP (TensorFlow PHP Binding)



要在PHP中使用深度神经网络,可以使用 Keras PHP——一个对Python库Keras/TensorFlow的封装。实际上,它是一个从PHP运行Python脚本的桥梁。这不是一个纯PHP解决方案,但允许使用TensorFlow的全部功能。



示例:加载预训练模型

use KerasPHP\\Keras;

$keras = new Keras();

// 从.h5文件加载模型$model = $keras->load_model('/path/to/model.h5');

// 准备数据(数组)$input = [[0.5, 0.2, 0.1]];

// 预测$result =

推荐