Apprentissage automatique en PHP : réalité ou compromis ?
Traditionnellement, l'apprentissage automatique (ML) est associé à Python, R ou Julia. Cependant, PHP, étant l'un des langages les plus populaires pour le développement web, possède également un écosystème de bibliothèques pour le ML. Utiliser PHP pour l'apprentissage automatique est un compromis : vous perdez en performance et en nombre de modèles prêts à l'emploi par rapport à Python, mais vous gagnez une intégration transparente avec les applications web, une pile technologique unifiée et la possibilité de déployer rapidement des algorithmes de ML simples sans lancer de microservices.
Dans cet article, nous allons passer en revue les principales bibliothèques pour l'apprentissage automatique en PHP, leurs capacités et des exemples d'utilisation.
1. PHP-ML (PHP Machine Learning)
PHP-ML est la bibliothèque la plus populaire pour le ML en PHP. Elle ne nécessite aucune dépendance externe et est entièrement écrite en PHP. Elle implémente des algorithmes classiques : classification, régression, clustering, réduction de dimensionnalité et métriques d'évaluation.
Fonctionnalités :
- Classification : Naive Bayes, SVM, k-Nearest Neighbors, Decision Tree
- Régression : Linear Regression, SVR
- Clustering : k-Means, DBSCAN
- Prétraitement des données : normalisation, standardisation
- Métriques : accuracy, precision, recall, F1-score
Exemple : Classification des iris de 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);
// Prédiction pour un nouvel échantillon (longueur du sépale, largeur du sépale, longueur du pétale, largeur du pétale)$newSample = [5.1, 3.5, 1.4, 0.2];$predicted = $classifier->predict($newSample);
echo "Classe prédite : " . $predicted; // 'Iris-setosa'2. Rubix ML
Rubix ML est une bibliothèque plus moderne et plus puissante. Contrairement à PHP-ML, elle prend en charge les réseaux de neurones, le gradient boosting, les méthodes d'ensemble et le travail avec de grands ensembles de données via des générateurs (lazy evaluation).
Caractéristiques :
- Réseaux de neurones (Multilayer Perceptron, CNN via conversion)
- Ensembles : Random Forest, Gradient Boosted Trees
- Pipelines de traitement de données (pipelines)
- Prise en charge des caractéristiques catégorielles et du One-Hot Encoding
- Exportation des modèles au format sérialisé PHP
Exemple : Régression linéaire avec pipeline
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;
// Création de l'ensemble de données$samples = [[1], [2], [3], [4], [5]];$labels = [1.5, 2.8, 4.1, 5.9, 7.2];
$dataset = new Labeled($samples, $labels);
// Création du pipeline$estimator = new Pipeline([ new NumericStringConverter(), new MinMaxNormalizer(),], new Ridge(1.0));
$estimator->train($dataset);
// Prédiction$prediction = $estimator->predict([[6]]);echo "Valeur prédite : " . $prediction[0]; // ~8.33. Keras PHP (TensorFlow PHP Binding)
Pour travailler avec des réseaux de neurones profonds en PHP, vous pouvez utiliser Keras PHP — une surcouche de la bibliothèque Python Keras/TensorFlow. Il s'agit en fait d'un pont qui exécute des scripts Python depuis PHP. Ce n'est pas une solution PHP pure, mais elle permet d'utiliser toute la puissance de TensorFlow.
Exemple : Chargement d'un modèle pré-entraîné
use KerasPHP\\Keras;
$keras = new Keras();
// Chargement du modèle à partir du fichier .h5$model = $keras->load_model('/path/to/model.h5');
// Préparation des données (tableau)$input = [[0.5, 0.2, 0.1]];
// Prédiction$result = Aussi dans la bibliothèque
Travailler avec CSV en JavaScript (Node.js) : bibliothèques et outils
Génération de rapports PDF en PHP : aperçu des bibliothèques et exemples de code
Client OAuth pour Go (Golang) : Connexion aux fournisseurs OAuth 2.0
Traitement d'images en Kotlin : redimensionnement et recadrage avec la bibliothèque Kamel