PHP for Machine Learning: Myth or Reality?
\n\nMany developers are accustomed to thinking that machine learning is the prerogative of Python, R, or Julia. However, in practice, PHP, despite its reputation as a "web language," can also be used for ML tasks, especially in the context of integration with existing web applications. In this article, we will analyze the real capabilities of PHP in machine learning, show code examples using popular libraries, and honestly discuss the limitations.
\n\nMain Libraries for Machine Learning in PHP
\n\nThe PHP ecosystem for ML is not as rich as Python's, but several mature libraries deserve attention.
\n\nPHP-ML (php-ml/php-ml)
\nThis is the most popular library for machine learning in PHP. It provides classic algorithms: classification, regression, clustering, association rules, and even neural networks.
\n\nrequire_once __DIR__ . '/vendor/autoload.php';\n\nuse Phpml\\Classification\\KNearestNeighbors;\nuse Phpml\\Dataset\\ArrayDataset;\nuse Phpml\\Metric\\Accuracy;\n\n// Training data: [length, width] -> label (0 - cat, 1 - dog)\n$samples = [[1, 2], [2, 3], [3, 4], [5, 6], [6, 7], [7, 8]];\n$labels = [0, 0, 0, 1, 1, 1];\n\n$classifier = new KNearestNeighbors($k = 3);\n$classifier->train($samples, $labels);\n\n// Prediction for a new sample\n$prediction = $classifier->predict([4, 5]);\necho "Predicted label: " . ($prediction == 0 ? "cat" : "dog") . PHP_EOL;\n\n// Accuracy evaluation\n$testSamples = [[2.5, 3.5], [6.5, 7.5]];\n$testLabels = [0, 1];\n$predictions = $classifier->predict($testSamples);\n$accuracy = Accuracy::score($testLabels, $predictions);\necho "Accuracy: " . ($accuracy * 100) . "%" . PHP_EOL;\n\n\nRubix ML (rubix/ml)
\nA more modern and advanced library with support for deep learning, neural networks, ensemble methods, and data pipelines. Unlike PHP-ML, Rubix ML is actively developed and has enterprise-level documentation.
\n\nrequire_once __DIR__ . '/vendor/autoload.php';\n\nuse Rubix\\ML\\Classifiers\\KNearestNeighbors;\nuse Rubix\\ML\\Datasets\\Labeled;\nuse Rubix\\ML\\CrossValidation\\Reports\\AggregateReport;\nuse Rubix\\ML\\CrossValidation\\Reports\\ConfusionMatrix;\nuse Rubix\\ML\\CrossValidation\\Reports\\MulticlassBreakdown;\n\n// Create a dataset\n$samples = [\n [1.2, 2.3, 0.8],\n [3.4, 5.6, 1.2],\n [7.8, 9.0, 3.4],\n [2.1, 4.3, 1.5],\n];\n$labels = ['A', 'B', 'A', 'B'];\n\n$dataset = new Labeled($samples, $labels);\n\n// Train the classifier\n$estimator = new KNearestNeighbors(3);\n$estimator->train($dataset);\n\n// Predict\n$predictions = $estimator->predict([\n [2.0, 3.0, 1.0],\n [6.0, 8.0, 2.5],\n]);\n\necho "Predictions: " . implode(', ', $predictions) . PHP_EOL;\n\n// Evaluation\n$report = new AggregateReport([\n new MulticlassBreakdown(),\n new ConfusionMatrix(),\n]);\n$results = $report->generate($predictions, ['A', 'B']);\nprint_r($results);\n\n\nPractical Capabilities of PHP for ML
\n\nIn practice, PHP can be useful in the following scenarios:
\n\n- \n
- Integrating ML into existing web applications — if you already have a site on Laravel or Symfony, you can add simple classification or regression models without rewriting the backend. \n
- Simple text processing — sentiment analysis, spam filters, news categorization. \n
- Recommendation systems — collaborative filtering based on purchase or viewing data. \n
- Anomalies and monitoring — detecting unusual user behavior in real time. \n
Example of a simple spam filter using PHP-ML:
\n\nuse Phpml\\Classification\\NaiveBayes;\nuse Phpml\\FeatureExtraction\\TfIdfTransformer;\nuse Phpml\\Tokenization\\WhitespaceTokenizer;\nuse Phpml\\FeatureExtraction\\