JavaScript机器学习之线性回归
译者按: AI时代,不会机器学习的JavaScript开发者不是好的前端工程师。
原文: Machine Learning with JavaScript : Part 1
译者: Fundebug
为了保证可读性,本文采用意译而非直译。另外,本文版权归原作者所有,翻译仅用于学习
使用JavaScript做机器学习?不是应该用Python吗?是不是我疯了才用JavaScript做如此繁重的计算?难道我不用Python和R是为了装逼?scikit-learn(Python机器学习库)不能使用Python吧?
嗯,我并没有开玩笑…
其实呢,类似于Python的scikit-learn,JavaScript开发者也开发了一些机器学习库,我打算用一下它们。
JavaScript不能用于机器学习?
- 太慢(幻觉?)
- 矩阵操作太难(有函数库啊,比如math.js)
- JavaScript只能用于前端开发(Node.js开发者笑了)
- 机器学习库都是Python(JS开发者)
JavaScript机器学习库
- brain.js (神经网络)
- Synaptic (神经网络)
- Natural (自然语言处理)
- ConvNetJS (卷积神经网络)
- mljs (一系列AI库)
- Neataptic (神经网络)
- Webdnn (深度学习)
我们将使用mljs来实现线性回归,源代码在GitHub仓库: machine-learning-with-js。下面是详细步骤:
1. 安装模块
$ yarn add ml-regression csvtojson |
或者使用 npm
$ npm install ml-regression csvtojson |
- ml-regression模块提供了一些回归算法
- csvtojson模块用于将CSV数据转换为JSON。
2. 初始化并导入数据
下载.csv数据。
假设你已经初始化了一个NPM项目,请在index.js中输入以下内容:
const ml = require("ml-regression"); |
使用csvtojson模块的fromFile方法加载数据:
csv() |
3. 转换数据
导入的数据为json对象数组,我们需要使用dressData函数将其转化为两个数据向量x和y:
// 将JSON数据转换为向量数据 |
4. 训练数据并预测
编写performRegression函数:
// 使用线性回归算法训练数据 |
regressionModel的toString方法可以指定参数的精确度。
predictOutput函数可以根据输入值输出预测值。
// 接收输入数据,然后输出预测值 |
predictOutput函数使用了Node.js的Readline模块:
const readline = require("readline"); |
5. 完整程序
完整的程序index.js是这样的:
const ml = require("ml-regression"); |
执行 node index.js
,则输出如下:
$ node index.js |
f(x) = 0.202 * x + 9.31 |
恭喜!你已经使用JavaScript训练了一个线性回归模型,如下:
f(x) = 0.202 * x + 9.31 |
感兴趣的话,请持续关注 machine-learning-with-js,我将使用JavaScript实现各种机器学习算法。
关于Fundebug
Fundebug专注于JavaScript、微信小程序、微信小游戏、支付宝小程序、React Native、Node.js和Java线上应用实时BUG监控。 自从2016年双十一正式上线,Fundebug累计处理了30亿+错误事件,付费客户有阳光保险、达令家、核桃编程、荔枝FM、微脉等众多品牌企业。欢迎大家免费试用!
版权声明: 转载时请注明作者KiwenLau以及本文地址: https://kiwenlau.com/2017/07/03/javascript-machine-learning-regression/