用javascript进行一个简单的机器学习小实例

简介: 本篇文章教你如何使用JavaScript在浏览器中完整地定义、训练和部署机器学习算法。

虽然它可能不是机器学习传统选择的开发语言,但是JavaScript正在证明有能力完成这样的工作——即使它目前还不能与主要的机器学习语言Python竞争。在进一步学习之前,让我们做一下机器学习的介绍。

根据Skyhoshi这个有着超过13年开发人员的实际经验,机器学习赋予计算机根据所提供的数据进行学习的能力,并且识别模式,然后得出结论,而不需要明确的人为干预。

传统上来说,JavaScript在机器学习中不常用,有以下两个主要的原因,包括有限的库支持和实现的复杂性。

虽然如此,JavaScript最近已经颇欢迎了,主要是因为在客户端上有完整的部署机器学习应用的广泛机会。

在这篇文章中,我将演示一个简单的机器学习辅导项目,它展示了JavaScript也能够为机器学习应用提供动力。

对于这个相对简单的项目,我将使用Neal.js程序文件,它是一个简便的开源JavaScript库,它为机器学习提供了预处理的神经网络。

该项目的目的是用一组训练数据来训练一个神经网络,使得它可以预测颜色的对比是亮的还是暗的。

第一步:安装库

让我们使用NoDE.js这个文件,并通过NPM包管理器来安装库。为此,你需要在计算机上预先安装No.js文件。

这里是你可以用在终端上运行的代码。(切记把它安装在你要处理的文件夹上)

 npm install brain.js 

第二步: 导入库

使用以下代码在你的文件上导入库:

 const brain = require("brain.js"); 

第三步:创建一个神经网络

以下是代码:

 const network = new brain.NeuralNetwork(); 

第四步:训练数据

在机器学习之中,训练的数据和收到的结果一样好。更高质量的数据可能比较低质量的数据预测出更好的结果。

该数据是一组示例,它被提供给算法并指导算法要搜索什么东西。

在这个例子中,由于我们希望这个机器学习算法学会识别光亮和黑暗之间颜色对比的差异,所以我们将给出这些例子来训练学习模型。

在这之后,该算法将利用所提供的实例来辨别两个组之间的本质特征。

如果在将来提供了未知的数据,那么这个算法将根据从原始训练模型中识别出来的特征进行分类。

对于这个项目,我们将使用内置的brain.js程序文件中的train()函数来使用实例数据的数组来训练神经网络。

每个实例中的训练数据都将有一个输入对象和一个输出对象,它们都应该是一个从01的数组。

因为我们正在使用颜色来进行研究,因此我们要去找到它们的RGB值。由于RGB颜色介于0255之间,所以我们可以将它们转换为被255相除的01之间的值。

举个例子,如果颜色的RGB值为(158,183,224),我们通过除以255来转换每个值,它将变成(0.620.720.88)。

在这之后,我们需要提供RGB值的一些示例数据集,并指定输出将是亮的还是暗的。

以下是代码:

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}},

  ]);

第五步: 查看结果

在用一些实例数据进行训练算法之后,现在是查看预测结果的时候了。

我们只需调用Run()函数,并提供一个颜色色调的参数,目的是想知道它是亮的还是暗的。

以下是代码:

const result = network.run({r:0.0,g:1,b:0.65});

console.log(result);

如果我们在Windows终端上执行以上代码,输出将是这样的:

0defa2ebd7a17727169818f768db78fcb11897cc 

正如你所看到的,我们给初学者的机器学习算法预测到颜色对比度是亮色的,准确度为0.9797%)。

如果我们希望输出是亮的或者是暗的,那么可以添加下面的代码:

const result = brain.likely({r:0.0,g:1,b:0.65}, network);

console.log(result);

以下终端上的显示结果:

11b1a89c6b0f8cb7fcfcc34745d51985fb547e5c 

结论:

以下是整个项目的代码:

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);

在这篇文章中,我演示了一个简单的关于JavaScript的机器学习项目。为了提高你的机器学习技能,你当然也需要完成类似的项目。

数十款阿里云产品限时折扣中,赶紧点击领劵开始云上实践吧!

本文由北邮@爱可可-爱生活 老师推荐,阿里云云栖社区组织翻译。

文章原标题《9 Reasons why your machine learning project will fail》

作者: Alberto Artasanchez

译者:奥特曼,审校:袁虎。

文章为简译,更为详细的内容,请查看原文

相关文章
|
30天前
|
机器学习/深度学习 自然语言处理 JavaScript
信息论、机器学习的核心概念:熵、KL散度、JS散度和Renyi散度的深度解析及应用
在信息论、机器学习和统计学领域中,KL散度(Kullback-Leibler散度)是量化概率分布差异的关键概念。本文深入探讨了KL散度及其相关概念,包括Jensen-Shannon散度和Renyi散度。KL散度用于衡量两个概率分布之间的差异,而Jensen-Shannon散度则提供了一种对称的度量方式。Renyi散度通过可调参数α,提供了更灵活的散度度量。这些概念不仅在理论研究中至关重要,在实际应用中也广泛用于数据压缩、变分自编码器、强化学习等领域。通过分析电子商务中的数据漂移实例,展示了这些散度指标在捕捉数据分布变化方面的独特优势,为企业提供了数据驱动的决策支持。
52 2
信息论、机器学习的核心概念:熵、KL散度、JS散度和Renyi散度的深度解析及应用
|
1月前
|
机器学习/深度学习 自然语言处理 前端开发
前端大模型入门:Transformer.js 和 Xenova-引领浏览器端的机器学习变革
除了调用API接口使用Transformer技术,你是否想过在浏览器中运行大模型?Xenova团队推出的Transformer.js,基于JavaScript,让开发者能在浏览器中本地加载和执行预训练模型,无需依赖服务器。该库利用WebAssembly和WebGPU技术,大幅提升性能,尤其适合隐私保护、离线应用和低延迟交互场景。无论是NLP任务还是实时文本生成,Transformer.js都提供了强大支持,成为构建浏览器AI应用的核心工具。
366 1
|
1月前
|
前端开发 JavaScript
基础 JavaScript 实例
基础 JavaScript 实例
21 1
|
6月前
|
数据可视化 JavaScript 架构师
D3.js实战:数据可视化高级技巧实例应用
本文介绍了D3.js入门,包括创建HTML文件引入库、绘制简单线图、柱状图和饼图。示例展示了数据绑定、交互性和动画效果,如柱状图的悬停效果和线图的数据平滑过渡。此外,还提及力导向图和地图可视化的实现,以及使用Enter, Update, Exit模式进行动态更新。最后提到了复杂图表和高级技巧,如使用组件库、动画、交互性和性能优化。
121 0
|
3月前
|
机器学习/深度学习 存储 前端开发
实战揭秘:如何借助TensorFlow.js的强大力量,轻松将高效能的机器学习模型无缝集成到Web浏览器中,从而打造智能化的前端应用并优化用户体验
【8月更文挑战第31天】将机器学习模型集成到Web应用中,可让用户在浏览器内体验智能化功能。TensorFlow.js作为在客户端浏览器中运行的库,提供了强大支持。本文通过问答形式详细介绍如何使用TensorFlow.js将机器学习模型带入Web浏览器,并通过具体示例代码展示最佳实践。首先,需在HTML文件中引入TensorFlow.js库;接着,可通过加载预训练模型如MobileNet实现图像分类;然后,编写代码处理图像识别并显示结果;此外,还介绍了如何训练自定义模型及优化模型性能的方法,包括模型量化、剪枝和压缩等。
49 1
|
3月前
|
API UED 开发者
如何在Uno Platform中轻松实现流畅动画效果——从基础到优化,全方位打造用户友好的动态交互体验!
【8月更文挑战第31天】在开发跨平台应用时,确保用户界面流畅且具吸引力至关重要。Uno Platform 作为多端统一的开发框架,不仅支持跨系统应用开发,还能通过优化实现流畅动画,增强用户体验。本文探讨了Uno Platform中实现流畅动画的多个方面,包括动画基础、性能优化、实践技巧及问题排查,帮助开发者掌握具体优化策略,提升应用质量与用户满意度。通过合理利用故事板、减少布局复杂性、使用硬件加速等技术,结合异步方法与预设缓存技巧,开发者能够创建美观且流畅的动画效果。
77 0
|
3月前
|
JavaScript
js之选项卡制作实例
js之选项卡制作实例
27 0
|
5月前
|
机器学习/深度学习 人工智能 数据处理
人工智能平台PAI产品使用合集之PAI-DSW实例服务器ping不通google.com,该如何排查
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
5月前
|
机器学习/深度学习 算法 Python
【机器学习】集成学习在信用评分领域实例
【机器学习】集成学习在信用评分领域实例
126 1