您现在的位置是:亿华云 > 域名
如何使用JavaScript构建机器学习模型
亿华云2025-10-03 06:19:16【域名】1人已围观
简介目前,机器学习领域建模的主要语言是 Python 和 R,前不久腾讯推出的机器学习框架 Angel 则支持 Java 和 Scala。本文作者 Abhishek Soni 则用行动告诉我们,开发机器学
目前,何使机器学习领域建模的建机主要语言是 Python 和 R,前不久腾讯推出的器学机器学习框架 Angel 则支持 Java 和 Scala。本文作者 Abhishek Soni 则用行动告诉我们,习模型开发机器学习模型,何使JavaScript 也可以。建机
JavaScript?器学我不是应该使用 Python 吗?甚至 Scikit-learn 在 JavaScript 上都不工作。
这是习模型可能的,实际上,何使连我自己都惊讶于开发者对此忽视的建机态度。就 Scikit-learn 而言,器学Javascript 的习模型开发者事实上已经推出了适用的库,它会在本文中有所提及。何使那么,建机让我们看看 Javascript 在机器学习上能够做什么吧。器学
根据人工智能先驱 Arthur Samuel 的说法,机器学习为计算机提供了无需明确编程的学习能力。换句话说,它使得计算机能够自我学习并执行正确的指令,无需人类提供全部指导。
谷歌已经把自己移动优先的策略转换到人工智能优先很久了。亿华云计算
为什么 JavaScript 在机器学习界未被提及过?
慢(真的假的?) 矩阵操作很困难(这里有库,比如 math.js) 仅用于 Web 开发(然而这里还有 Node.js) 机器学习库通常是在 Python 上的(还好,JS 的开发者人数也不少)在 JavaScript 中有一些可供使用的预制库,其中包含一些机器学习算法,如线性回归、SVM、朴素贝叶斯等等,以下是其中的一部分。
brain.js(神经网络) Synaptic(神经网络) Natural(自然语言处理) ConvNetJS(卷积神经网络) mljs(一组具有多种功能的子库)首先,我们将使用 mljs 回归库来进行一些线性回归操作。
参考代码:https://github.com/abhisheksoni27/machine-learning-with-js
1. 安装库
$ npm install ml-regression csvtojson $ yarn add ml-regression csvtojsonml-regression 正如其名,负责机器学习的线性回归。
csvtojson 是一个用于 node.js 的快速 CSV 解析器,它允许加载 CSV 数据文件并将其转换为 JSON。
2. 初始化并加载数据
下载数据文件(.csv),并将其加入你的项目。
链接:http://www-bcf.usc.edu/~gareth/ISL/Advertising.csv
如果你已经初始化了一个空的 npm 项目,打开 index.js,输入以下代码。云南idc服务商
const ml = require(ml-regression); const csv = require(csvtojson); const SLR = ml.SLR; // Simple Linear Regression const csvFilePath = advertising.csv; // Data let csvData = [], // parsed Data X = [], // Input y = []; // Output let regressionModel;我把文件放在了项目的根目录下,如果你想放在其他地方,请记得更新 csvFilePath。
现在我们使用 csvtojson 的 fromFile 方法加载数据文件:
csv() .fromFile(csvFilePath) .on(json, (jsonObj) => { csvData.push(jsonObj); }) .on(done, () => { dressData(); // To get data points from JSON Objects performRegression(); });3. 打包数据,准备执行
JSON 对象被存储在 csvData 中,我们还需要输入数据点数组和输出数据点。我们通过一个填充 X 和 Y 变量的 dressData 函数来运行数据。
function dressData() { /** * One row of the data object looks like: * { * TV: "10", * Radio: "100", * Newspaper: "20", * "Sales": "1000" * } * * Hence, while adding the data points, * we need to parse the String value as a Float. */ csvData.forEach((row) => { X.push(f(row.Radio)); y.push(f(row.Sales)); }); } function f(s) { return parseFloat(s); }4. 训练模型开始预测
数据已经打包完毕,是时候训练我们的模型了。
为此,我们需要写一个 performRegression 函数:
function performRegression() { regressionModel = new SLR(X, y); // Train the model on training data console.log(regressionModel.toString(3)); predictOutput(); }performRegression 函数有一个方法 toString,它为浮点输出获取一个名为 precision 的参数。predictOutput 函数能让你输入数值,然后将模型的输出传到控制台。它是这样的(注意,我使用的是 Node.js 的 readline 工具):
function predictOutput() { rl.question(Enter input X for prediction (Press CTRL+C to exit) : , (answer) => { console.log(`At X = ${ answer}, y = ${ regressionModel.predict(parseFloat(answer))}`); predictOutput(); }); }以下是为了增加阅读用户的代码
const readline = require(readline); // For user prompt to allow predictions const rl = readline.createInterface({ input: process.stdin, output: process.stdout });5. 大功告成!
遵循以上步骤,你的 index.js 应该是源码下载这样:
const ml = require(ml-regression); const csv = require(csvtojson); const SLR = ml.SLR; // Simple Linear Regression const csvFilePath = advertising.csv; // Data let csvData = [], // parsed Data X = [], // Input y = []; // Output let regressionModel; const readline = require(readline); // For user prompt to allow predictions const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); csv() .fromFile(csvFilePath) .on(json, (jsonObj) => { csvData.push(jsonObj); }) .on(done, () => { dressData(); // To get data points from JSON Objects performRegression(); }); function performRegression() { regressionModel = new SLR(X, y); // Train the model on training data console.log(regressionModel.toString(3)); predictOutput(); } function dressData() { /** * One row of the data object looks like: * { * TV: "10", * Radio: "100", * Newspaper: "20", * "Sales": "1000" * } * * Hence, while adding the data points, * we need to parse the String value as a Float. */ csvData.forEach((row) => { X.push(f(row.Radio)); y.push(f(row.Sales)); }); } function f(s) { return parseFloat(s); } function predictOutput() { rl.question(Enter input X for prediction (Press CTRL+C to exit) : , (answer) => { console.log(`At X = ${ answer}, y = ${ regressionModel.predict(parseFloat(answer))}`); predictOutput(); }); }到你的终端上运行 node index.js,得到的输出会是这样:
$ node index.js f(x) = 0.202 * x + 9.31 Enter input X for prediction (Press CTRL+C to exit) : 151.***t X = 151.5, y = 39.98974927911285 Enter input X for prediction (Press CTRL+C to exit) :恭喜!你刚刚在 JavaScript 中训练了***个线性回归模型。(PS. 你注意到速度了吗?)
很赞哦!(75233)