Aprendizado de Máquina em TypeScript: visão geral das bibliotecas para ML em 2024
O TypeScript ocupa com confiança um nicho não apenas no desenvolvimento web, mas também na Ciência de Dados. Graças à tipagem estática e compatibilidade com JavaScript, ele se torna uma ferramenta conveniente para construir modelos de aprendizado de máquina (ML) que funcionam diretamente no navegador ou no servidor (Node.js). Neste artigo, analisaremos as principais bibliotecas para aprendizado de máquina em TypeScript, suas características, exemplos de código e cenários de aplicação.
1. TensorFlow.js — o principal framework para ML no navegador
TensorFlow.js é uma porta do popular framework TensorFlow para JavaScript/TypeScript. Ele permite executar treinamento e inferência de modelos tanto no navegador quanto no Node.js. A biblioteca suporta aceleração GPU via WebGL e WebGPU, proporcionando ganhos de desempenho.
Principais recursos:
- Criação de redes neurais usando API de alto nível (tf.sequential, tf.model).
- Carregamento de modelos pré-treinados do TensorFlow Hub.
- Conversão de modelos da versão Python do TensorFlow para o formato .json.
- Trabalho com tensores, otimizadores e camadas.
Exemplo: regressão linear em TypeScript
import * as tf from '@tensorflow/tfjs';
// Dados: relação 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]);
// Criação do modeloconst model = tf.sequential();model.add(tf.layers.dense({units: 1, inputShape: [1]}));
// Compilaçãomodel.compile({optimizer: 'sgd', loss: 'meanSquaredError'});
// Treinamentomodel.fit(xs, ys, {epochs: 250}).then(() => { model.predict(tf.tensor2d([10], [1, 1])).print(); // Saída: ~19 (próximo de 2*10 - 1 = 19)});2. ML5.js — biblioteca para ML criativo
ML5.js é construída sobre o TensorFlow.js e é focada na simplicidade de uso. Ela fornece modelos prontos para reconhecimento de imagens, áudio, texto e gestos. É ideal para projetos educacionais e prototipagem.
Exemplo: classificação de imagens
import * as ml5 from 'ml5';
// Carregamento do modelo pré-treinado MobileNetconst classifier = ml5.imageClassifier('MobileNet');
// Classificação da imagemconst 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 neurais para Node.js e navegador
Brain.js é uma biblioteca leve para construir redes neurais em JavaScript/TypeScript. Suporta várias arquiteturas: LSTM, RNN, GRU. É excelente para tarefas de previsão de séries temporais e processamento de texto.
Exemplo: rede neural simples 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 com arquitetura flexível
Synaptic permite criar redes neurais de qualquer arquitetura, incluindo perceptrons multicamadas, redes recorrentes e mapas auto-organizáveis de Kohonen. Não requer dependências e funciona no navegador.
Exemplo: criação de um perceptron
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.985
Também na biblioteca
Configuração de aplicações Java: bibliotecas e ferramentas para gerenciamento de configurações
once_cell para Rust: guia completo com exemplos práticos
protobuf para C++: guia completo com exemplos
Testes em C++: visão geral de frameworks e ferramentas (Google Test, Catch2, doctest)
ORM para JavaScript (Node.js): comparação entre Sequelize, TypeORM, Prisma