Машинное обучение на TypeScript: обзор библиотек для ML в 2024

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Машинное обучение на TypeScript: обзор библиотек для ML в 2024

TypeScript уверенно занимает нишу не только веб-разработки, но и Data Science. Благодаря статической типизации и совместимости с JavaScript, он становится удобным инструментом для построения моделей машинного обучения (ML), которые работают прямо в браузере или на сервере (Node.js). В этой статье мы разберём ключевые библиотеки для машинного обучения на TypeScript, их особенности, примеры кода и сценарии применения.

1. TensorFlow.js — главный фреймворк для ML в браузере

TensorFlow.js — это порт популярного фреймворка TensorFlow на JavaScript/TypeScript. Он позволяет запускать обучение и инференс моделей как в браузере, так и в Node.js. Библиотека поддерживает GPU-ускорение через WebGL и WebGPU, что даёт прирост производительности.

Основные возможности:

  • Создание нейронных сетей с помощью высокоуровнего API (tf.sequential, tf.model).
  • Загрузка предобученных моделей из TensorFlow Hub.
  • Преобразование моделей из Python-версии TensorFlow в формат .json.
  • Работа с тензорами, оптимизаторами и слоями.

Пример: линейная регрессия на TypeScript

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

// Данные: зависимость y = 2x - 1
const xs = tf.tensor2d([-1, 0, 1, 2, 3, 4], [6, 1]);
const ys = tf.tensor2d([-3, -1, 1, 3, 5, 7], [6, 1]);

// Создание модели
const model = tf.sequential();
model.add(tf.layers.dense({units: 1, inputShape: [1]}));

// Компиляция
model.compile({optimizer: 'sgd', loss: 'meanSquaredError'});

// Обучение
model.fit(xs, ys, {epochs: 250}).then(() => {
  model.predict(tf.tensor2d([10], [1, 1])).print();
  // Вывод: ~19 (близко к 2*10 - 1 = 19)
});

2. ML5.js — библиотека для творческого ML

ML5.js построена поверх TensorFlow.js и ориентирована на простоту использования. Она предоставляет готовые модели для распознавания изображений, звука, текста и жестов. Идеально подходит для образовательных проектов и прототипирования.

Пример: классификация изображений

import * as ml5 from 'ml5';

// Загрузка предобученной модели MobileNet
const classifier = ml5.imageClassifier('MobileNet');

// Классификация изображения
const img = document.getElementById('myImage') as HTMLImageElement;
classifier.classify(img, (err: Error | null, results: any[]) => {
  if (err) console.error(err);
  else console.log('Результат:', results[0].label);
});

3. Brain.js — нейросети для Node.js и браузера

Brain.js — лёгкая библиотека для построения нейронных сетей на JavaScript/TypeScript. Поддерживает различные архитектуры: LSTM, RNN, GRU. Отлично подходит для задач прогнозирования временных рядов и обработки текста.

Пример: простая нейросеть для 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.99
console.log(output);

4. Synaptic — архитектурно гибкая библиотека

Synaptic позволяет создавать нейронные сети любой архитектуры, включая многослойные перцептроны, сети с обратной связью и самоорганизующиеся карты Кохонена. Не требует зависимостей и работает в браузере.

Пример: создание перцептрона

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. Danfo.js — библиотека для работы с данными

Danfo.js — аналог pandas для JavaScript/TypeScript. Предоставляет DataFrame и Series для обработки табличных данных, статистических расчётов и визуализации. Часто используется как этап предобработки данных перед

Рекомендаций