Maschinelles Lernen mit PHP: Überblick über Bibliotheken zur ML-Integration

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

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.3


3. 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 =

Empfehlungen