Maschinelles Lernen mit PHP: Realität oder Kompromiss?
Traditionell wird maschinelles Lernen (ML) mit Python, R oder Julia assoziiert. PHP jedoch, als eine der beliebtesten Sprachen für die Webentwicklung, verfügt ebenfalls über ein Ökosystem von Bibliotheken für ML. Die Verwendung von PHP für maschinelles Lernen ist ein Kompromiss: Sie verlieren an Leistung und der Anzahl fertiger Modelle im Vergleich zu Python, gewinnen aber eine nahtlose Integration in Webanwendungen, einen einheitlichen Technologie-Stack und die Möglichkeit, einfache ML-Algorithmen schnell ohne den Start von Microservices zu implementieren.
In diesem Artikel betrachten wir die wichtigsten Bibliotheken für maschinelles Lernen mit PHP, ihre Möglichkeiten und Anwendungsbeispiele.
1. PHP-ML (PHP Machine Learning)
PHP-ML ist die beliebteste Bibliothek für ML mit PHP. Sie benötigt keine externen Abhängigkeiten und ist vollständig in PHP geschrieben. Sie implementiert klassische Algorithmen: Klassifikation, Regression, Clustering, Dimensionsreduktion und Bewertungsmetriken.
Möglichkeiten:
- Klassifikation: Naive Bayes, SVM, k-Nearest Neighbors, Decision Tree
- Regression: Linear Regression, SVR
- Clustering: k-Means, DBSCAN
- Datenvorverarbeitung: Normalisierung, Standardisierung
- Metriken: accuracy, precision, recall, F1-score
Beispiel: Klassifikation der Iris-Blüten
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);
// Vorhersage für eine neue Instanz (Kelchblattlänge, Kelchblattbreite, Kronblattlänge, Kronblattbreite)$newSample = [5.1, 3.5, 1.4, 0.2];$predicted = $classifier->predict($newSample);
echo "Vorhergesagte Klasse: " . $predicted; // 'Iris-setosa'2. Rubix ML
Rubix ML ist eine modernere und leistungsfähigere Bibliothek. Im Gegensatz zu PHP-ML unterstützt sie neuronale Netze, Gradient Boosting, Ensemble-Methoden und die Arbeit mit großen Datensätzen über Generatoren (lazy evaluation).
Besonderheiten:
- Neuronale Netze (Multilayer Perceptron, CNN durch Konvertierung)
- Ensembles: Random Forest, Gradient Boosted Trees
- Datenverarbeitungspipelines (pipelines)
- Unterstützung für kategoriale Merkmale und One-Hot Encoding
- Export von Modellen im PHP-serialisierten Format
Beispiel: Lineare Regression mit 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;
// Datensatz erstellen$samples = [[1], [2], [3], [4], [5]];$labels = [1.5, 2.8, 4.1, 5.9, 7.2];
$dataset = new Labeled($samples, $labels);
// Pipeline erstellen$estimator = new Pipeline([ new NumericStringConverter(), new MinMaxNormalizer(),], new Ridge(1.0));
$estimator->train($dataset);
// Vorhersage$prediction = $estimator->predict([[6]]);echo "Vorhergesagter Wert: " . $prediction[0]; // ~8.33. Keras PHP (TensorFlow PHP Binding)
Für die Arbeit mit tiefen neuronalen Netzen in PHP kann Keras PHP verwendet werden – ein Wrapper um die Python-Bibliothek Keras/TensorFlow. Tatsächlich ist es eine Brücke, die Python-Skripte von PHP aus startet. Es ist keine reine PHP-Lösung, ermöglicht aber die Nutzung der gesamten Leistungsfähigkeit von TensorFlow.
Beispiel: Laden eines vortrainierten Modells
use KerasPHP\\Keras;
$keras = new Keras();
// Modell aus einer .h5-Datei laden$model = $keras->load_model('/path/to/model.h5');
// Daten vorbereiten (Array)$input = [[0.5, 0.2, 0.1]];
// Vorhersage$result = Auch in der Bibliothek
Rate Limiting in C# (.NET): Leitfaden zur Bibliothek System.Threading.RateLimiting
Bildverarbeitung in C++: Bibliotheken CImg, OpenCV und Magick++
Datenvalidierung in PHP: Vollständiger Leitfaden zu Tools und Bibliotheken
Event Bus und das Observer-Pattern in C# (.NET): Implementierung und Beispiele