Aprendizaje automático en JavaScript (Node.js): bibliotecas y herramientas
Aunque Python sigue siendo el lenguaje dominante en el ámbito de la Ciencia de Datos, el ecosistema de JavaScript (especialmente Node.js) está en activo desarrollo y ofrece potentes herramientas para el aprendizaje automático. Esto permite a los desarrolladores frontend y backend integrar modelos de ML directamente en aplicaciones web, soluciones de servidor, chatbots e incluso dispositivos IoT. En este artículo, revisaremos las bibliotecas clave para Node.js que permiten entrenar redes neuronales, ejecutar modelos preentrenados y realizar tareas clásicas de ML.
1. TensorFlow.js — potente framework de Google
TensorFlow.js es un port completo del famoso TensorFlow a JavaScript. Funciona tanto en el navegador como en Node.js, utilizando WebGL o CUDA (a través de @tensorflow/tfjs-node-gpu) para acelerar los cálculos. La biblioteca permite cargar modelos preentrenados (por ejemplo, MobileNet, PoseNet) y entrenar los propios.
Instalación:
npm install @tensorflow/tfjs @tensorflow/tfjs-nodeEjemplo: red neuronal simple para regresión
const tf = require('@tensorflow/tfjs');require('@tensorflow/tfjs-node');
// Creamos un modelo simple: y = 2x - 1const model = tf.sequential();model.add(tf.layers.dense({units: 1, inputShape: [1]}));
model.compile({loss: 'meanSquaredError', optimizer: 'sgd'});
// Datos de entrenamientoconst xs = tf.tensor2d([-1, 0, 1, 2, 3, 4], [6, 1]);const ys = tf.tensor2d([-3, -1, 1, 3, 5, 7], [6, 1]);
async function train() { await model.fit(xs, ys, {epochs: 250}); model.predict(tf.tensor2d([10], [1, 1])).print(); // Debería ser ~19}train();TensorFlow.js es ideal para tareas de visión por computadora, NLP y trabajo con series temporales directamente en el servidor.
2. Brain.js — redes neuronales para tareas simples
Brain.js es una biblioteca ligera para crear y entrenar redes neuronales. Es fácil de aprender, no requiere conocimientos profundos de matemáticas y es excelente para prototipado. Soporta perceptrones multicapa, LSTM y redes recurrentes.
Instalación:
npm install brain.jsEjemplo: XOR (O exclusivo)
const brain = require('brain.js');const net = new brain.NeuralNetwork();
net.train([ { input: [0, 0], output: [0] }, { input: [0, 1], output: [1] }, { input: [1, 0], output: [1] }, { input: [1, 1], output: [0] }], { iterations: 2000 });
const output = net.run([1, 0]); // ~0.97 (cercano a 1)console.log(output);Brain.js es útil para clasificación, predicción y análisis de texto (por ejemplo, análisis de sentimiento).
3. ML.js — colección de algoritmos clásicos
ML.js es un conjunto de módulos para aprendizaje automático tradicional (sin redes neuronales profundas). Incluye implementaciones de KNN, Naive Bayes, SVM, clustering K-means, PCA, árboles de decisión y mucho más. Cada algoritmo es un paquete npm independiente.
Instalación (ejemplo con KNN):
npm install ml-knnEjemplo: clasificación del iris de Fisher
const KNN = require('ml-knn');
// Conjunto de entrenamiento: [largo del sépalo, ancho, largo del pétalo, ancho]const trainingSet = [[5.1, 3.5, 1.4, 0.2], [7.0, 3.2, 4.7, 1.4], [6.3, 3.3, 6.0, 2.5]];const labels = ['setosa', 'versicolor', 'virginica'];
const knn = new KNN(trainingSet, labels, {k: 3});const prediction = knn.predict([5.9, 3.0, 4.2, 1.5]); // 'versicolor'console.log(prediction);ML.js es indispensable para la implementación rápida de métodos estadísticos cuando no se necesitan redes neuronales.
4. Natural — procesamiento del lenguaje natural (NLP)
Natural es una biblioteca para NLP en Node.js. Incluye tokenización, stemming (Porter, Lancaster), clasificación (Naive Bayes, regresión logística), TF-IDF, análisis de sentimiento y comparación fonética.
Instalación:
npm install natural< También en la biblioteca
Trabajo con Kafka en C# (.NET): biblioteca Confluent.Kafka
Trabajo con imágenes en Go: redimensionar y recortar con la librería imaging
NaturalLanguage para Swift: guía completa con ejemplos
Configuración de aplicaciones Java: bibliotecas y herramientas
Codeception para PHP: guía completa con ejemplos prácticos