JavaScript中的简单机器学习项目
Web 浏览器中可以实现机器学习吗?
是的,可以使用 JavaScript 在浏览器中完全定义,训练和部署机器学习算法。
尽管它可能不是机器学习的常规选择,但事实证明 JavaScript 能够完成这样的任务-即使它不能与主要的机器学习语言 Python 竞争。
在继续之前,让我们对机器学习进行一些介绍。
机器学习使计算机具有从提供的数据中学习,识别模式并得出结论的能力,而无需明确的人工干预。
传统上,由于多种原因,JavaScript 在机器学习中并不常用,包括有限的库支持和实现复杂性。
尽管如此,JavaScript 最近变得流行起来,主要是因为在完全在客户端上部署机器学习应用程序时有大量机会。
在本文中,我将说明一个简单的机器学习教程项目,该项目演示了 JavaScript 也能够为机器学习应用程序提供支持。
让我们开始吧
对于这个简单的项目,我将使用 brain.js,这是一个方便的开源 JavaScript 库,带有用于机器学习的预制神经网络。
该项目的目的是使用一组训练数据来训练神经网络,从而可以预测颜色对比是浅色还是深色。
步骤 1:安装库
让我们使用 Node.js 通过 npm 软件包管理器安装该库。为此,您需要在计算机上预安装 Node.js。
这是您可以在终端上运行的代码。(请记住将其安装在您要使用的文件夹中)。
npm install brain.js
步骤 2:导入库
使用以下代码将库导入文件中:
const brain = require("brain.js");
步骤 3:建立神经网络
这是代码:
const network = new brain.NeuralNetwork();
步骤 4:训练资料
在机器学习中,训练数据与将要接收的结果一样好。与较低质量的数据相比,较高质量的数据可能会预测更好的结果。
此数据是提供给算法的一组示例,以“指示”搜索内容。
在这种情况下,由于我们希望我们的机器学习算法学习识别明暗对比之间的差异,因此我们将提供这些示例来训练模型。
此后,该算法将使用所提供的示例来区分两组之间的基本特征。
如果将来提供未知数据,该算法将根据从原始训练模型中识别出的特征进行分类。
对于这个项目,我们将使用内置的 brain.js **train()**函数来使用一系列示例数据来训练我们的神经网络。
每个示例训练数据都会有一个输入对象和一个输出对象,它们都应该是一个从 0 到 1 的数字数组。
由于我们正在处理颜色,因此我们将选择其 RGB 值。由于 RGB 颜色在 0 到 255 之间,因此我们可以将它们除以 255,从而将其值转换为 0 到 1 之间的值。
例如,如果颜色的 RGB 值为(158,183,224)。如果我们将每个值除以 255,则将变为(0.62,0.72,0.88)。
此后,我们需要提供一些示例 RBG 值的数据集,并指定输出是亮还是暗。
这是代码:
network.train([
{input: {r:0.62,g:0.72,b:0.88}, output:{light: 1}},
{input: {r:0.1,g:0.84,b:0.72}, output:{light: 1}},
{input: {r:0.33,g:0.24,b:0.29}, output:{dark: 1}},
{input: {r:0.74,g:0.78,b:0.86}, output:{light: 1}},
]);
步骤 5:查看结果
在使用一些示例数据对算法进行了训练之后,现在该查看预测结果了。
你兴奋吗?
我们只需要调用**run()**函数并提供一个我们想知道是浅色还是深色的色相参数即可。
这是代码:
const result = network.run({r:0.0,g:1,b:0.65});
console.log(result);
如您所见,我们的初学者机器学习算法预测颜色对比度为浅色,准确度为 0.97(97%)。
如果我们希望输出为亮或暗,则可以添加以下代码:
const result = brain.likely({r:0.0,g:1,b:0.65}, network);
console.log(result);
结论
这是整个项目的代码:
const brain = require("brain.js");
const network = new brain.NeuralNetwork();
network.train([
{input: {r:0.62,g:0.72,b:0.88}, output:{light: 1}},
{input: {r:0.1,g:0.84,b:0.72}, output:{light: 1}},
{input: {r:0.33,g:0.24,b:0.29}, output:{dark: 1}},
{input: {r:0.74,g:0.78,b:0.86}, output:{light: 1}},
]);
//const result = network.run({r:0.0,g:1,b:0.65});
const result = brain.likely({r:0.0,g:1,b:0.65}, network);
console.log(result)