简介: Atwood定律说,凡是可以用Javascript实现的应用,最终都会用Javascript实现掉。作为最热门的机器学习领域,服务端是Python的主场,但是到了手机端呢?Android和iOS里默认都没有Python。但是有浏览器的地方就有js,现在还有个新场景 - 小程序。
来源: Alibaba F2E
作者:旭伦
除此之外,为了可以在不联网情况下进行训练的,也有支持本地框架比如React Native的。
可以说,只要有前端的地方,就有机器学习的框架在。
js唯一的问题在于,变化太快,每年都有很多新库出现,但是也有不少老的库宣布不维护了。但是,万变不离其宗,工具本身虽然经常有变化,但是它们的类型是非常稳定的。
选择机器学习工具的方法论
我们要写机器学习算法,需要什么样的工具呢?
机器学习工具可以分为以下四个层次:
层次一:直接服务于具体领域的框架
首先我们需要直接服务于具体领域的框架,比如处理CV的,NLP的,推荐算法之类的。
比如nlp.js,上一个版本发布在2020年10月。nlp.js的代码写起来是这样的:
运行起来很简单,装个库就好:
训练的速度也很快:
输出的结果类似这样:
层次二:深度学习框架
第二是我们的核心内容,深度学习框架。
说到Javascript深度学习,占统治地位的仍然是Tensorflow.js,我们来看个经典的强化学习的例子:
我们再看另一个大厂微软的例子,支持webGL和wasm,基于浏览器不容易:
层次三:机器学习框架
第三是机器学习的框架。光了解深度学习还不够,传统的机器学习在更贴近业务的时候,可能效果更好,还节省算力资源。比如可以使用mljs库,地址在:https://github.com/mljs/ml
比如我们想做个k-means聚类,可以使用mljs框架的ml-kmeans库:
装个包就可以玩了:
运行结果如下:
我们也可以直接在网页中使用,比如我们写个K近邻的例子:
最后我们再来个决策树的例子,采用mljs自带的Iris数据集。需要通过npm安装下ml-dataset-iris和ml-cart:
输出结果如下:
层次四:数学和统计库
第四个层次是数学和统计库。做统计和数学计算,很多时候才是理解业务的最好手段。这个时候我们也不能空手上,也需要工具。
这方面的代表库有stdlib: https://stdlib.io/虽然它名字和实际都是标准库,但是为了数学和统计提供了很丰富的内容,比如150多个数学函数和35种统计分布。
我们先安装一下做后面的实验:
比如各种数学函数:
构造Normal时的两个参数是均值和方差。
输出如下:
这个无良的标准库竟然还支持50多种数据集,看个小例子,美国州首府的数据集:
输出结果如下:
总结
综上,如果要做从0到1的业务,尽可能用第一层次的工具,这样最有助于快速落地。但是如果是要做增量,尤其是困难的增长,第三第四层次是首选,因为更有助于深刻理解数据。
本文为阿里云原创内容,未经允许不得转载。