Aprendizaje automático en PHP: bibliotecas y herramientas
Tradicionalmente, el aprendizaje automático (ML) se asocia con Python, R o Julia. Sin embargo, PHP, siendo uno de los lenguajes más populares para el desarrollo web, también tiene un ecosistema para implementar algoritmos de ML. Aunque PHP no posee el mismo rendimiento y abundancia de bibliotecas de bajo nivel (como NumPy o TensorFlow), para muchas tareas prácticas — clasificación, regresión, agrupamiento, trabajo con redes neuronales — existen soluciones maduras. En este artículo, revisaremos tres bibliotecas principales para aprendizaje automático en PHP: PHP-ML, Rubix ML y Keras-PHP.
1. PHP-ML (PHP Machine Learning)
PHP-ML es la biblioteca más popular y estable para aprendizaje automático en PHP. No requiere dependencias externas, está escrita completamente en PHP y ofrece una amplia gama de algoritmos. La biblioteca es ideal para aprendizaje, prototipado e integración de ML en aplicaciones web.
Capacidades principales:
- Clasificación: Naive Bayes, SVM (basado en LibSVM), k-vecinos más cercanos (k-NN), árboles de decisión.
- Regresión: Regresión lineal, regresión con vectores de soporte (SVR), regresión k-NN.
- Agrupamiento: k-medias (k-Means), DBSCAN, agrupamiento jerárquico.
- Métricas de evaluación: Precisión, exhaustividad, medida F1, matriz de confusión.
- Preprocesamiento de datos: Normalización, estandarización, codificación de características categóricas.
Ejemplo: entrenamiento de un clasificador para determinar la polaridad del texto
use Phpml\\Classification\\NaiveBayes;use Phpml\\FeatureExtraction\\TfIdfTransformer;use Phpml\\Tokenization\\WhitespaceTokenizer;
// Datos de entrenamiento$samples = [ 'excelente película', 'película horrible', 'me gustó mucho', 'aburrido y tonto'];$labels = ['positive', 'negative', 'positive', 'negative'];
// Transformación del texto a vectores numéricos$tokenizer = new WhitespaceTokenizer();$transformer = new TfIdfTransformer();
// Creamos y entrenamos el modelo$classifier = new NaiveBayes();$classifier->train($samples, $labels);
// Predicción$prediction = $classifier->predict(['trama interesante']);echo $prediction; // positive2. Rubix ML
Rubix ML es una biblioteca más moderna y avanzada, orientada a alto rendimiento y flexibilidad. Soporta trabajo con grandes conjuntos de datos a través de generadores (lazy loading), tiene un sistema de pipelines integrado e integración con TensorFlow a través de NDArray. A diferencia de PHP-ML, Rubix ML requiere PHP 7.4+ y utiliza extensiones como intl y mbstring.
Características clave:
- Redes neuronales: Perceptrones multicapa (MLP) con soporte para varias funciones de activación (ReLU, Sigmoid, Softmax).
- Pipelines: Combinación de varios pasos (normalización, codificación, entrenamiento) en un solo flujo.
- Trabajo con datos dispersos: Algoritmos eficientes para matrices grandes.
- Visualización: Herramientas integradas para generar gráficos (a través de SVG).
- Guardado y carga de modelos: Serialización en formato JSON o serializado de PHP.
Ejemplo: regresión para predecir el precio de la vivienda
use Rubix\\ML\\Regressors\\Ridge;use Rubix\\ML\\Datasets\\Labeled;use Rubix\\ML\\Transformers\\NumericStringConverter;
// Cargamos datos (supongamos CSV)$dataset = Labeled::fromIterator(new \\ArrayIterator([ ['area' => 120, 'rooms' => 3, 'price' => 150000], ['area' => 80, 'rooms' => 2, 'price' => 90000], ['area' => 200, 'rooms' => 4, 'price' =&g También en la biblioteca
Pruebas en Go (Golang): frameworks y herramientas — guía completa
Tokens JWT en Java: guía completa para trabajar con JSON Web Tokens
Colas de tareas en Go (Golang): mejores bibliotecas y herramientas