PHP para aprendizado de máquina: mito ou realidade?
\n\nMuitos desenvolvedores estão acostumados a pensar que aprendizado de máquina é prerrogativa do Python, R ou Julia. No entanto, na prática, o PHP, apesar de sua reputação de "linguagem web", também pode ser usado para resolver tarefas de ML, especialmente no contexto de integração com aplicações web existentes. Neste artigo, analisaremos as possibilidades reais do PHP em aprendizado de máquina, mostraremos exemplos de código usando bibliotecas populares e falaremos honestamente sobre as limitações.
\n\nPrincipais bibliotecas para aprendizado de máquina em PHP
\n\nO ecossistema PHP para ML não é tão rico quanto o do Python, mas algumas bibliotecas maduras merecem atenção.
\n\nPHP-ML (php-ml/php-ml)
\nEsta é a biblioteca mais popular para aprendizado de máquina em PHP. Ela fornece algoritmos clássicos: classificação, regressão, clusterização, regras de associação e até redes neurais.
\n\nrequire_once __DIR__ . '/vendor/autoload.php';\n\nuse Phpml\\Classification\\KNearestNeighbors;\nuse Phpml\\Dataset\\ArrayDataset;\nuse Phpml\\Metric\\Accuracy;\n\n// Dados de treinamento: [comprimento, largura] -> rótulo (0 - gato, 1 - cachorro)\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// Predição para uma nova amostra\n$prediction = $classifier->predict([4, 5]);\necho "Rótulo previsto: " . ($prediction == 0 ? "gato" : "cachorro") . PHP_EOL;\n\n// Avaliação da acurácia\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 "Acurácia: " . ($accuracy * 100) . "%" . PHP_EOL;\n\n\nRubix ML (rubix/ml)
\nUma biblioteca mais moderna e avançada com suporte para aprendizado profundo, redes neurais, métodos ensemble e pipelines de dados. Ao contrário do PHP-ML, o Rubix ML está em desenvolvimento ativo e possui documentação de nível empresarial.
\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// Criando o 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// Treinando o classificador\n$estimator = new KNearestNeighbors(3);\n$estimator->train($dataset);\n\n// Prevendo\n$predictions = $estimator->predict([\n [2.0, 3.0, 1.0],\n [6.0, 8.0, 2.5],\n]);\n\necho "Predições: " . implode(', ', $predictions) . PHP_EOL;\n\n// Avaliação\n$report = new AggregateReport([\n new MulticlassBreakdown(),\n new ConfusionMatrix(),\n]);\n$results = $report->generate($predictions, ['A', 'B']);\nprint_r($results);\n\n\nPossibilidades práticas do PHP para ML
\n\nNa prática, o PHP pode ser útil nos seguintes cenários:
\n\n- \n
- Integração de ML em aplicações web existentes — se você já tem um site em Laravel ou Symfony, pode adicionar modelos simples de classificação ou regressão sem reescrever o backend. \n
- Processamento simples de texto — análise de sentimento, filtros de spam, categorização de notícias. \n
- Sistemas de recomendação — filtragem colaborativa baseada em dados de compras ou visualizações. \n
- Anomalias e monitoramento — detecção de comportamento incomum de usuários em tempo real. \n
Exemplo de um filtro de spam simples com PHP-ML:
\n\nuse Phpml\\Classification\\NaiveBayes;\nuse Phpml\\FeatureExtraction\\TfIdfTransformer;\nuse Phpml\\Tokenization\\WhitespaceTokenizer;\nuse Phpml\\FeatureExtraction\\