摘要:不能用于機器學習太慢幻覺矩陣操作太難有函數庫啊,比如只能用于前端開發開發者笑了機器學習庫都是開發者機器學習庫神經網絡神經網絡自然語言處理卷積神經網絡一系列庫神經網絡深度學習我們將使用來實現線性回歸,源代碼在倉庫。
譯者按: 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"); const csv = require("csvtojson"); const SLR = ml.SLR; // 線性回歸 const csvFilePath = "advertising.csv"; // 訓練數據 let csvData = [], X = [], y = []; let regressionModel;
使用csvtojson模塊的fromFile方法加載數據:
csv() .fromFile(csvFilePath) .on("json", (jsonObj) => { csvData.push(jsonObj); }) .on("done", () => { dressData(); performRegression(); });3. 轉換數據
導入的數據為json對象數組,我們需要使用dressData函數將其轉化為兩個數據向量x和y:
// 將JSON數據轉換為向量數據 function dressData() { /** * 原始數據中每一行為JSON對象 * 因此需要將數據轉換為向量數據,并將字符串解析為浮點數 * { * TV: "10", * Radio: "100", * Newspaper: "20", * "Sales": "1000" * } */ csvData.forEach((row) => { X.push(f(row.Radio)); y.push(f(row.Sales)); }); } // 將字符串解析為浮點數 function f(s) { return parseFloat(s); }4. 訓練數據并預測
編寫performRegression函數:
// 使用線性回歸算法訓練數據 function performRegression() { regressionModel = new SLR(X, y); console.log(regressionModel.toString(3)); predictOutput(); }
regressionModel的toString方法可以指定參數的精確度。
predictOutput函數可以根據輸入值輸出預測值。
// 接收輸入數據,然后輸出預測值 function predictOutput() { rl.question("請輸入X用于預測(輸入CTRL+C退出) : ", (answer) => { console.log(`當X = ${answer}時, 預測值y = ${regressionModel.predict(parseFloat(answer))}`); predictOutput(); }); }
predictOutput函數使用了Node.js的Readline模塊:
const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout });5. 完整程序
完整的程序index.js是這樣的:
const ml = require("ml-regression"); const csv = require("csvtojson"); const SLR = ml.SLR; // 線性回歸 const csvFilePath = "advertising.csv"; // 訓練數據 let csvData = [], X = [], y = []; let regressionModel; const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); csv() .fromFile(csvFilePath) .on("json", (jsonObj) => { csvData.push(jsonObj); }) .on("done", () => { dressData(); performRegression(); }); // 使用線性回歸算法訓練數據 function performRegression() { regressionModel = new SLR(X, y); console.log(regressionModel.toString(3)); predictOutput(); } // 將JSON數據轉換為向量數據 function dressData() { /** * 原始數據中每一行為JSON對象 * 因此需要將數據轉換為向量數據,并將字符串解析為浮點數 * { * TV: "10", * Radio: "100", * Newspaper: "20", * "Sales": "1000" * } */ csvData.forEach((row) => { X.push(f(row.Radio)); y.push(f(row.Sales)); }); } // 將字符串解析為浮點數 function f(s) { return parseFloat(s); } // 接收輸入數據,然后輸出預測值 function predictOutput() { rl.question("請輸入X用于預測(輸入CTRL+C退出) : ", (answer) => { console.log(`當X = ${answer}時, 預測值y = ${regressionModel.predict(parseFloat(answer))}`); predictOutput(); }); }
執行 node index.js ,則輸出如下:
$ node index.js
f(x) = 0.202 * x + 9.31 請輸入X用于預測(輸入CTRL+C退出) : 151.5 當X = 151.5時, 預測值y = 39.98974927911285 請輸入X用于預測(輸入CTRL+C退出) :
恭喜!你已經使用JavaScript訓練了一個線性回歸模型,如下:
f(x) = 0.202 * x + 9.31
感興趣的話,請持續關注 machine-learning-with-js,我將使用JavaScript實現各種機器學習算法。
歡迎加入我們Fundebug的全棧BUG監控交流群: 622902485。
版權聲明:
轉載時請注明作者Fundebug以及本文地址:
https://blog.fundebug.com/2017/07/03/javascript-machine-learning-regression/
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/87130.html
摘要:在統計學中,線性回歸是利用稱為線性回歸方程的最小二乘函數對一個或多個自變量和因變量之間關系進行建模的一種回歸分析維基百科。對當前示例作圖表示衡量線性回歸法的指標誤差一個訓練后的模型通常都會使用測試數據集測試該模型的準確性。 在統計學中,線性回歸(Linear regression)是利用稱為線性回歸方程的最小二乘函數對一個或多個自變量和因變量之間關系進行建模的一種回歸分析維基百科。 簡...
摘要:還提供了,將多項式特征數據歸一化和線性回歸組合在了一起,大大方便的編程的過程。在機器學習算法中,主要的挑戰來自方差,解決的方法主要有降低模型復雜度降維增加樣本數使用驗證集模型正則化。 多項式回歸 多項式回歸使用線性回歸的基本思路 非線性曲線如圖: showImg(https://segmentfault.com/img/bVbkn4q?w=372&h=252); 假設曲線表達式為:$y...
閱讀 2020·2021-10-09 09:41
閱讀 1596·2021-09-28 09:36
閱讀 1100·2021-09-26 09:55
閱讀 1285·2021-09-10 11:17
閱讀 1141·2021-09-02 09:56
閱讀 2755·2019-08-30 12:58
閱讀 2927·2019-08-29 13:03
閱讀 1847·2019-08-26 13:40