Machine Learning en TypeScript: revisión de bibliotecas para ML en 2024

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Machine Learning en TypeScript: revisión de bibliotecas para ML en 2024



TypeScript ocupa con confianza un nicho no solo en el desarrollo web, sino también en Data Science. Gracias a la tipificación estática y la compatibilidad con JavaScript, se convierte en una herramienta conveniente para construir modelos de machine learning (ML) que funcionan directamente en el navegador o en el servidor (Node.js). En este artículo, analizaremos las bibliotecas clave para machine learning en TypeScript, sus características, ejemplos de código y casos de uso.



1. TensorFlow.js — el framework principal para ML en el navegador



TensorFlow.js es un puerto del popular framework TensorFlow a JavaScript/TypeScript. Permite ejecutar el entrenamiento y la inferencia de modelos tanto en el navegador como en Node.js. La biblioteca admite aceleración por GPU a través de WebGL y WebGPU, lo que proporciona un aumento de rendimiento.



Características principales:

  • Creación de redes neuronales con la API de alto nivel (tf.sequential, tf.model).
  • Carga de modelos preentrenados desde TensorFlow Hub.
  • Conversión de modelos de la versión de Python de TensorFlow al formato .json.
  • Trabajo con tensores, optimizadores y capas.


Ejemplo: regresión lineal en TypeScript

import * as tf from '@tensorflow/tfjs';

// Datos: relación y = 2x - 1const xs = tf.tensor2d([-1, 0, 1, 2, 3, 4], [6, 1]);const ys = tf.tensor2d([-3, -1, 1, 3, 5, 7], [6, 1]);

// Creación del modeloconst model = tf.sequential();model.add(tf.layers.dense({units: 1, inputShape: [1]}));

// Compilaciónmodel.compile({optimizer: 'sgd', loss: 'meanSquaredError'});

// Entrenamientomodel.fit(xs, ys, {epochs: 250}).then(() => { model.predict(tf.tensor2d([10], [1, 1])).print(); // Salida: ~19 (cercano a 2*10 - 1 = 19)});


2. ML5.js — biblioteca para ML creativo



ML5.js está construida sobre TensorFlow.js y está orientada a la facilidad de uso. Proporciona modelos listos para reconocimiento de imágenes, sonido, texto y gestos. Es ideal para proyectos educativos y prototipado.



Ejemplo: clasificación de imágenes

import * as ml5 from 'ml5';

// Carga del modelo preentrenado MobileNetconst classifier = ml5.imageClassifier('MobileNet');

// Clasificación de la imagenconst img = document.getElementById('myImage') as HTMLImageElement;classifier.classify(img, (err: Error | null, results: any[]) => { if (err) console.error(err); else console.log('Resultado:', results[0].label);});


3. Brain.js — redes neuronales para Node.js y el navegador



Brain.js es una biblioteca ligera para construir redes neuronales en JavaScript/TypeScript. Admite varias arquitecturas: LSTM, RNN, GRU. Es excelente para tareas de predicción de series temporales y procesamiento de texto.



Ejemplo: red neuronal simple para XOR

import brain from '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] }]);

const output = net.run([1, 0]); // ~0.99console.log(output);


4. Synaptic — biblioteca arquitectónicamente flexible



Synaptic permite crear redes neuronales de cualquier arquitectura, incluidos perceptrones multicapa, redes recurrentes y mapas autoorganizados de Kohonen. No requiere dependencias y funciona en el navegador.



Ejemplo: creación de un perceptrón

import { Architect, Trainer } from 'synaptic';

const network = new Architect.Perceptron(2, 3, 1);const trainer = new Trainer(network);

trainer.train([ { input: [0, 0], output: [0] }, { input: [0, 1], output: [1] }, { input: [1, 0], output: [1] }, { input: [1, 1], output: [0] }], { iterations: 1000 });

console.log(network.activate([1, 0])); // ~0.98


5

Recommendations