机器学习|Javascript 机器学习的四个层次( 二 )
说到Javascript深度学习 , 占统治地位的仍然是Tensorflow.js , 我们来看个经典的强化学习的例子:
使用浏览器的local storage和indexdb作为存储 , 边训练边展示训练效果的过程 , 很有前端的风范 。
我们再看另一个大厂微软的例子 , 支持webGL和wasm , 基于浏览器不容易:
另外需要强调的是 , 用于前端的框架并不是简单的把native或者python框架移植过来的 , 比如说它要处理兼容性的问题:
很多同学都对Tensorflow有一定了解 , 我们就手写一个网页 , 然后在其中调tf的API就好:
!DOCTYPE htmlhtmlheadmeta encoding=\"UTF-8\"/script src=https://mparticle.uc.cn/"https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@3.0.0/dist/tf.min.js\"/script/headbodydiv id=\"tf-display\"/divscriptlet a = tf.tensor1d([1.0
); let d1 = document.getElementById(\"tf-display\"); d1.innerText = a;/script/body/html 层次三:机器学习框架 第三是机器学习的框架 。 光了解深度学习还不够 , 传统的机器学习在更贴近业务的时候 , 可能效果更好 , 还节省算力资源 。 比如可以使用mljs库 , 地址在:https://github.com/mljs/ml
比如我们想做个k-means聚类 , 可以使用mljs框架的ml-kmeans库:
const kmeans = require('ml-kmeans');let data = https://mparticle.uc.cn/api/[[1 1 1
[1 2 1
[-1 -1 -1
[-1 -1 -1.5
;let centers = [[1 2 1
[-1 -1 -1
;let ans = kmeans(data 2 { initialization: centers );console.log(ans); 装个包就可以玩了:
npm i ml-kmeans 运行结果如下:
KMeansResult { clusters: [ 0 0 1 1
centroids: [ { centroid: [Array
error: 0.25 size: 2{ centroid: [Array
error: 0.0625 size: 2
converged: true iterations: 2 [Symbol(distance)
: [Function: squaredEuclidean
我们也可以直接在网页中使用 , 比如我们写个K近邻的例子:
!DOCTYPE htmlhtmlheadmeta encoding=\"UTF-8\" /script src=https://mparticle.uc.cn/"https://www.lactame.com/lib/ml/4.0.0/ml.min.js\"/script/headbodydiv id=\"ml-display\"/divscriptconst train_dataset = [ [0 0 0
[0 1 1
[1 1 0
[2 2 2
[1 2 2
[2 1 2
; const train_labels = [0 0 0 1 1 1
; let knn = new ML.KNN(train_dataset train_labels { k: 2 ); // consider 2 nearest neighbors const test_dataset = [ [0.9 0.9 0.9
[1.1 1.1 1.1
[1.1 1.1 1.2
[1.2 1.2 1.2
; let ans = knn.predict(test_dataset); let d1 = document.getElementById(\"ml-display\"); d1.innerText = ans;/script/body/html 最后我们再来个决策树的例子 , 采用mljs自带的Iris数据集 。 需要通过npm安装下ml-dataset-iris和ml-cart:
const irisDataset = require('ml-dataset-iris');const DecisionTreeClassifier = require('ml-cart');const trainingSet = irisDataset.getNumbers();const predictions = irisDataset .getClasses() .map((elem) =irisDataset.getDistinctClasses().indexOf(elem));const options = { gainFunction: 'gini' maxDepth: 10 minNumSamples: 3;const classifier = new DecisionTreeClassifier.DecisionTreeClassifier(options);classifier.train(trainingSet predictions);const result = classifier.predict(trainingSet);console.log(result); 输出结果如下:
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... 50 more items
层次四:数学和统计库 第四个层次是数学和统计库 。 做统计和数学计算 , 很多时候才是理解业务的最好手段 。 这个时候我们也不能空手上 , 也需要工具 。
这方面的代表库有stdlib: https://stdlib.io/虽然它名字和实际都是标准库 , 但是为了数学和统计提供了很丰富的内容 , 比如150多个数学函数和35种统计分布 。
我们先安装一下做后面的实验:
npm install @stdlib/stdlib 比如各种数学函数:
再比如各种随机分布:
- 36氪首发|烹饪机器人公司「智谷天厨」获数千万元天使轮融资,羲融善道独家投资
- 网友热议|母亲回应3个孩子2个上清华:只能教孩子做人诚实守信 学习都靠自己努力
- 机器人|华为机器人新专利上线 网友:先有华为后有天开上鸿蒙如升仙
- 金字塔是时间机器?用途是拉伸和压缩时间,或能使生命延长和衰老
- 第六届全省中小学生互联网+机器人设计活动决赛顺利结束
- javascript|穿戴设备将迎变革,OPPO又增新专利,能提升模式切换效率!
- “文旅机器人小i”上岗
- 文旅机器人“小i”来了
- 如何评价扫地机器人离家出走一事?
- 李飞飞团队将ViT用在机器人身上,规划推理最高提速512倍
