PHP机器学习:库与工具
传统上,机器学习(ML)与Python、R或Julia相关联。然而,PHP作为最流行的Web开发语言之一,也拥有实现ML算法的生态系统。尽管PHP不具备与NumPy或TensorFlow相同的性能和丰富的底层库,但对于许多实际任务——分类、回归、聚类、神经网络工作——已有成熟的解决方案。本文将介绍三种主要的PHP机器学习库:PHP-ML、Rubix ML和Keras-PHP。
1. PHP-ML (PHP Machine Learning)
PHP-ML 是最流行且最稳定的PHP机器学习库。它无需外部依赖,完全用PHP编写,并提供广泛的算法。该库非常适合学习、原型设计以及将ML集成到Web应用中。
主要功能:
- 分类:朴素贝叶斯、SVM(基于LibSVM)、k近邻(k-NN)、决策树。
- 回归:线性回归、支持向量回归(SVR)、k-NN回归。
- 聚类:k均值(k-Means)、DBSCAN、层次聚类。
- 评估指标:准确率、召回率、F1分数、混淆矩阵。
- 数据预处理:归一化、标准化、分类特征编码。
示例:训练分类器判断文本情感
use Phpml\\Classification\\NaiveBayes;use Phpml\\FeatureExtraction\\TfIdfTransformer;use Phpml\\Tokenization\\WhitespaceTokenizer;
// 训练数据$samples = [ 'отличный фильм', 'ужасный фильм', 'очень понравилось', 'скучно и глупо'];$labels = ['positive', 'negative', 'positive', 'negative'];
// 将文本转换为数值向量$tokenizer = new WhitespaceTokenizer();$transformer = new TfIdfTransformer();
// 创建并训练模型$classifier = new NaiveBayes();$classifier->train($samples, $labels);
// 预测$prediction = $classifier->predict(['интересный сюжет']);echo $prediction; // positive2. Rubix ML
Rubix ML 是一个更现代、更先进的库,专注于高性能和灵活性。它支持通过生成器(惰性加载)处理大型数据集,具有内置的管道系统,并通过NDArray与TensorFlow集成。与PHP-ML不同,Rubix ML需要PHP 7.4+,并使用intl和mbstring等扩展。
主要特点:
- 神经网络:多层感知器(MLP),支持多种激活函数(ReLU、Sigmoid、Softmax)。
- 管道:将多个步骤(归一化、编码、训练)组合成一个管道。
- 处理稀疏数据:针对大型矩阵的高效算法。
- 可视化:内置绘图工具(通过SVG)。
- 模型保存与加载:序列化为JSON或PHP序列化格式。
示例:房价预测回归
use Rubix\\ML\\Regressors\\Ridge;use Rubix\\ML\\Datasets\\Labeled;use Rubix\\ML\\Transformers\\NumericStringConverter;
// 加载数据(假设为CSV)$dataset = Labeled::fromIterator(new \\ArrayIterator([ ['area' => 120, 'rooms' => 3, 'price' => 150000], ['area' => 80, 'rooms' => 2, 'price' => 90000], ['area' => 200, 'rooms' => 4, 'price' =&g