JavaScript (Node.js) 机器学习:库与工具
尽管 Python 在数据科学领域仍占主导地位,但 JavaScript(尤其是 Node.js)生态系统正在积极发展,并提供了强大的机器学习工具。这使得前端和后端开发者能够将 ML 模型直接集成到 Web 应用、服务器端解决方案、聊天机器人甚至 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 - 1const 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 是 Node.js 的 NLP 库。包含分词、词干提取(Porter、Lancaster)、分类(朴素贝叶斯、逻辑回归)、TF-IDF、情感分析和语音比较功能。
安装:
npm install natural<