PHP 机器学习:实现 ML 算法的库概览
尽管 Python 传统上被认为是机器学习的主要语言,但 PHP 也拥有几个强大的库,可以直接在 Web 应用程序中集成 ML 模型。在本文中,我们将介绍 PHP 机器学习的主要工具、它们的功能和使用示例。
为什么选择 PHP 进行机器学习?
PHP 仍然是 Web 开发中最流行的语言之一。使用 PHP 的 ML 库可以:
- 将模型直接集成到现有的 Laravel/Symfony 项目中
- 避免在单个项目中切换语言
- 使用熟悉的 Composer 生态系统和自动加载
- 在廉价主机上快速部署原型
1. PHP-ML — PHP 机器学习的标准
PHP-ML(PHP 机器学习库)是 PHP 中最流行的 ML 库。它提供了广泛的算法,无需外部依赖。
安装
composer require php-ai/php-ml示例:文本分类
<?phprequire_once __DIR__ . '/vendor/autoload.php';
use Phpml\\Classification\\KNearestNeighbors;use Phpml\\FeatureExtraction\\TfIdfTransformer;use Phpml\\Tokenization\\WhitespaceTokenizer;use Phpml\\FeatureExtraction\\TokenCountVectorizer;
// 训练数据$samples = [ 'отличный товар быстрая доставка', 'ужасное качество брак', 'рекомендую всем друзьям', 'не работает сломалось через день'];$labels = ['positive', 'negative', 'positive', 'negative'];
// 将文本转换为向量$vectorizer = new TokenCountVectorizer(new WhitespaceTokenizer());$vectorizer->fit($samples);$vectorizer->transform($samples);
$transformer = new TfIdfTransformer();$transformer->fit($samples);$transformer->transform($samples);
// 训练模型$classifier = new KNearestNeighbors();$classifier->train($samples, $labels);
// 预测$testSample = ['прекрасный продукт качество'];$vectorizer->transform($testSample);$transformer->transform($testSample);
$predicted = $classifier->predict($testSample[0]);echo "Тональность: $predicted"; // positive?>PHP-ML 的功能
- 分类: KNearestNeighbors, NaiveBayes, SVC, DecisionTree
- 回归: LeastSquares, Ridge, LogisticRegression
- 聚类: KMeans, DBSCAN, FuzzyCMeans
- 文本处理: TF-IDF, 词干提取, 分词
- 指标: accuracy, precision, recall, confusion matrix
2. Rubix ML — 现代机器学习框架
Rubix ML 是一个更新、性能更高的库,支持神经网络、GPU 加速和数据处理管道。
安装
composer require rubix/ml示例:用于分类的神经网络
<?phprequire_once __DIR__ . '/vendor/autoload.php';
use Rubix\\ML\\Datasets\\Labeled;use Rubix\\ML\\NeuralNet\\Layers\\Dense;use Rubix\\ML\\NeuralNet\\Layers\\Activation;use Rubix\\ML\\NeuralNet\\ActivationFunctions\\ReLU;use Rubix\\ML\\NeuralNet\\ActivationFunctions\\Softmax;use Rubix\\ML\\NeuralNet\\Optimizers\\Adam;use Rubix\\ML\\Classifiers\\MultilayerPerceptron;use Rubix\\ML\\CrossValidation\\Reports\\MulticlassBreakdown;
// 创建数据集$samples = [[2.5, 1.2], [1.0, 0.8], [3.5, 4.2], [2.0, 0.5]];$labels = ['cat', 'dog', 'cat', 'dog'];$dataset = new Labeled($samples, $labels);
// 创建 MLP(多层感知器)$mlp = new MultilayerPerceptron([ new Dense(10), new Activation(new ReLU()), new Dense(5), new Activa