目前,機器學習領域模組化的主要語言是 python 和 r,前不久騰訊推出的機器學習架構 angel 則支援 java 和 scala。本文作者 abhishek soni 則用行動告訴我們,開發機器學習模型,javascript 也可以。
javascript?我不是應該使用 python 嗎?甚至 scikit-learn 在 javascript 上都不工作。
這是可能的,實際上,連我自己都驚訝于開發者對此忽視的态度。就 scikit-learn 而言,javascript 的開發者事實上已經推出了适用的庫,它會在本文中有所提及。那麼,讓我們看看 javascript 在機器學習上能夠做什麼吧。
根據人工智能先驅 arthur samuel 的說法,機器學習為計算機提供了無需明确程式設計的學習能力。換句話說,它使得計算機能夠自我學習并執行正确的指令,無需人類提供全部指導。
谷歌已經把自己移動優先的政策轉換到人工智能優先很久了。
為什麼 javascript 在機器學習界未被提及過?
· 慢(真的假的?)
· 矩陣操作很困難(這裡有庫,比如 math.js)
· 僅用于 web 開發(然而這裡還有 node.js)
· 機器學習庫通常是在 python 上的(還好,js 的開發者人數也不少)
在 javascript 中有一些可供使用的預制庫,其中包含一些機器學習算法,如線性回歸、svm、樸素貝葉斯等等,以下是其中的一部分。
· brain.js(神經網絡)
· synaptic(神經網絡)
· natural(自然語言處理)
· convnetjs(卷積神經網絡)
· mljs(一組具有多種功能的子庫)
首先,我們将使用 mljs 回歸庫來進行一些線性回歸操作。
參考代碼:https://github.com/abhisheksoni27/machine-learning-with-js
1. 安裝庫
$ npm install ml-regression csvtojson
$ yarn add ml-regression csvtojson
ml-regression 正如其名,負責機器學習的線性回歸。
csvtojson 是一個用于 node.js 的快速 csv 解析器,它允許加載 csv 資料檔案并将其轉換為 json。
2. 初始化并加載資料
下載下傳資料檔案(.csv),并将其加入你的項目。
連結:
http://www-bcf.usc.edu/~gareth/isl/advertising.csv
如果你已經初始化了一個空的 npm 項目,打開 index.js,輸入以下代碼。
我把檔案放在了項目的根目錄下,如果你想放在其他地方,請記得更新 csvfilepath。
現在我們使用 csvtojson 的 fromfile 方法加載資料檔案:
3. 打包資料,準備執行
json 對象被存儲在 csvdata 中,我們還需要輸入資料點數組和輸出資料點。我們通過一個填充 x 和 y 變量的 dressdata 函數來運作資料。
4. 訓練模型開始預測
資料已經打包完畢,是時候訓練我們的模型了。
為此,我們需要寫一個 performregression 函數:
performregression 函數有一個方法 tostring,它為浮點輸出擷取一個名為 precision 的參數。predictoutput 函數能讓你輸入數值,然後将模型的輸出傳到控制台。它是這樣的(注意,我使用的是 node.js 的 readline 工具):
以下是為了增加閱讀使用者的代碼
5. 大功告成!
到你的終端上運作 node index.js,得到的輸出會是這樣:
恭喜!你剛剛在 javascript 中訓練了第一個線性回歸模型。(ps. 你注意到速度了嗎?)
文章來源:機器之心
<a href="https://www.jiqizhixin.com/articles/e2a4be9d-4b00-48d5-bccf-cc5a3582dd9b" target="_blank">原文位址</a>
歡迎關注個人公衆号,檢視更多好文。