Машинное обучение на PHP: обзор библиотек для интеграции ML

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Машинное обучение на PHP: реальность или компромисс?

Традиционно машинное обучение (ML) ассоциируется с Python, R или Julia. Однако PHP, будучи одним из самых популярных языков для веб-разработки, также имеет экосистему библиотек для ML. Использование PHP для машинного обучения — это компромисс: вы теряете в производительности и количестве готовых моделей по сравнению с Python, но получаете бесшовную интеграцию с веб-приложениями, единый стек технологий и возможность быстро внедрять простые ML-алгоритмы без запуска микросервисов.

В этой статье мы разберём основные библиотеки для машинного обучения на PHP, их возможности и примеры использования.

1. PHP-ML (PHP Machine Learning)

PHP-ML — самая популярная библиотека для ML на PHP. Она не требует внешних зависимостей и написана полностью на PHP. Реализует классические алгоритмы: классификацию, регрессию, кластеризацию, снижение размерности и метрики оценки.

Возможности:

  • Классификация: Naive Bayes, SVM, k-Nearest Neighbors, Decision Tree
  • Регрессия: Linear Regression, SVR
  • Кластеризация: k-Means, DBSCAN
  • Предобработка данных: нормализация, стандартизация
  • Метрики: accuracy, precision, recall, F1-score

Пример: Классификация ирисов Фишера

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, она поддерживает нейросети, градиентный бустинг, ансамблевые методы и работу с большими датасетами через генераторы (lazy evaluation).

Особенности:

  • Нейронные сети (Multilayer Perceptron, CNN через конвертацию)
  • Ансамбли: Random Forest, Gradient Boosted Trees
  • Конвейеры обработки данных (pipelines)
  • Поддержка категориальных признаков и One-Hot Encoding
  • Экспорт моделей в 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. Фактически это мост, который запускает Python-скрипты из PHP. Не является чистым 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 = $model->predict($input);

print_r($result); // Массив с вероятностями

4. PHP-ML-NeuralNetwork (расширение для PHP-ML)

Рекомендаций