Машинное обучение на JavaScript: библиотеки для Node.js — обзор и примеры

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

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

Начать курс

Машинное обучение на JavaScript (Node.js): библиотеки и инструменты

Хотя Python остается доминирующим языком в сфере Data Science, экосистема JavaScript (особенно Node.js) активно развивается и предлагает мощные инструменты для машинного обучения. Это позволяет frontend- и backend-разработчикам внедрять ML-модели непосредственно в веб-приложения, серверные решения, чат-ботов и даже IoT-устройства. В этой статье мы рассмотрим ключевые библиотеки для Node.js, которые позволяют обучать нейросети, запускать предобученные модели и выполнять классические задачи ML.

1. TensorFlow.js — мощный фреймворк от Google

TensorFlow.js — это полный порт знаменитого TensorFlow на JavaScript. Он работает как в браузере, так и в Node.js, используя WebGL или CUDA (через @tensorflow/tfjs-node-gpu) для ускорения вычислений. Библиотека позволяет загружать предобученные модели (например, MobileNet, PoseNet) и обучать собственные.

Установка:

npm install @tensorflow/tfjs @tensorflow/tfjs-node

Пример: простая нейронная сеть для регрессии

const tf = require('@tensorflow/tfjs');
require('@tensorflow/tfjs-node');

// Создаем простую модель: y = 2x - 1
const model = tf.sequential();
model.add(tf.layers.dense({units: 1, inputShape: [1]}));

model.compile({loss: 'meanSquaredError', optimizer: 'sgd'});

// Обучающие данные
const 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(); // Должно быть ~19
}
train();

TensorFlow.js идеален для задач компьютерного зрения, NLP и работы с временными рядами прямо на сервере.

2. Brain.js — нейросети для простых задач

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

Установка:

npm install brain.js

Пример: XOR (исключающее ИЛИ)

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 (близко к 1)
console.log(output);

Brain.js удобен для классификации, прогнозирования и анализа текста (например, определение тональности).

3. ML.js — коллекция классических алгоритмов

ML.js — это набор модулей для традиционного машинного обучения (без глубоких нейросетей). Включает реализацию KNN, наивного Байеса, SVM, кластеризации K-means, PCA, деревьев решений и многое другое. Каждый алгоритм — отдельный npm-пакет.

Установка (пример с KNN):

npm install ml-knn

Пример: классификация ирисов Фишера

const KNN = require('ml-knn');

// Обучающая выборка: [длина чашелистика, ширина, длина лепестка, ширина]
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 незаменим для быстрой реализации статистических методов, когда не нужны нейросети.

4. Natural — обработка естественного языка (NLP)

Natural — библиотека для NLP на Node.js. Включает токенизацию, стемминг (Porter, Lancaster), классификацию (наивный Байес, логистическая регрессия), TF-IDF, анализ тональности и фонетическое сравнение.

Установка:

npm install natural

Пример: классификация текста (спам/не спам

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