Aprendizado de Máquina em PHP: realidade ou compromisso?
Tradicionalmente, o aprendizado de máquina (ML) é associado a Python, R ou Julia. No entanto, o PHP, sendo uma das linguagens mais populares para desenvolvimento web, também possui um ecossistema de bibliotecas para ML. Usar PHP para aprendizado de máquina é um compromisso: você perde em desempenho e quantidade de modelos prontos em comparação com Python, mas ganha integração perfeita com aplicações web, uma pilha de tecnologia unificada e a capacidade de implementar rapidamente algoritmos de ML simples sem executar microsserviços.
Neste artigo, vamos explorar as principais bibliotecas para aprendizado de máquina em PHP, suas capacidades e exemplos de uso.
1. PHP-ML (PHP Machine Learning)
PHP-ML é a biblioteca mais popular para ML em PHP. Ela não requer dependências externas e é escrita inteiramente em PHP. Implementa algoritmos clássicos: classificação, regressão, clusterização, redução de dimensionalidade e métricas de avaliação.
Capacidades:
- Classificação: Naive Bayes, SVM, k-Nearest Neighbors, Decision Tree
- Regressão: Linear Regression, SVR
- Clusterização: k-Means, DBSCAN
- Pré-processamento de dados: normalização, padronização
- Métricas: accuracy, precision, recall, F1-score
Exemplo: Classificação das Íris 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);
// Predição para uma nova amostra (comprimento da sépala, largura da sépala, comprimento da pétala, largura da pétala)$newSample = [5.1, 3.5, 1.4, 0.2];$predicted = $classifier->predict($newSample);
echo "Classe prevista: " . $predicted; // 'Iris-setosa'2. Rubix ML
Rubix ML é uma biblioteca mais moderna e poderosa. Ao contrário do PHP-ML, ela suporta redes neurais, gradient boosting, métodos ensemble e trabalho com grandes conjuntos de dados através de geradores (lazy evaluation).
Características:
- Redes Neurais (Multilayer Perceptron, CNN via conversão)
- Ensembles: Random Forest, Gradient Boosted Trees
- Pipelines de processamento de dados
- Suporte para atributos categóricos e One-Hot Encoding
- Exportação de modelos em formato serializado do PHP
Exemplo: Regressão Linear com 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;
// Criando o conjunto de dados$samples = [[1], [2], [3], [4], [5]];$labels = [1.5, 2.8, 4.1, 5.9, 7.2];
$dataset = new Labeled($samples, $labels);
// Criando o pipeline$estimator = new Pipeline([ new NumericStringConverter(), new MinMaxNormalizer(),], new Ridge(1.0));
$estimator->train($dataset);
// Predição$prediction = $estimator->predict([[6]]);echo "Valor previsto: " . $prediction[0]; // ~8.33. Keras PHP (TensorFlow PHP Binding)
Para trabalhar com redes neurais profundas em PHP, você pode usar Keras PHP — um wrapper sobre a biblioteca Python Keras/TensorFlow. Na prática, é uma ponte que executa scripts Python a partir do PHP. Não é uma solução puramente PHP, mas permite usar todo o poder do TensorFlow.
Exemplo: Carregando um modelo pré-treinado
use KerasPHP\\Keras;
$keras = new Keras();
// Carregando o modelo do arquivo .h5$model = $keras->load_model('/caminho/para/modelo.h5');
// Preparando os dados (array)$input = [[0.5, 0.2, 0.1]];
// Predição$result = Também na biblioteca
Socket.io para JavaScript (Node.js): guia completo com exemplos
Trabalho com XML em PHP: DOMDocument, SimpleXML e XPath
proptest Rust: guia completo com exemplos práticos
MassTransit para C# (.NET): guia completo com exemplos práticos