成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何使用JavaScript構建機器學習模型

移動開發 開發
開發機器學習模型,JavaScript 也可以。

目前,機器學習領域建模的主要語言是 Python 和 R,前不久騰訊推出的機器學習框架 Angel 則支持 Java 和 Scala。本文作者 Abhishek Soni 則用行動告訴我們,開發機器學習模型,JavaScript 也可以。

Linear Regression

JavaScript?我不是應該使用 Python 嗎?甚至 Scikit-learn 在 JavaScript 上都不工作。

這是可能的,實際上,連我自己都驚訝于開發者對此忽視的態度。就 Scikit-learn 而言,Javascript 的開發者事實上已經推出了適用的庫,它會在本文中有所提及。那么,讓我們看看 Javascript 在機器學習上能夠做什么吧。

圖1

根據人工智能先驅 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,輸入以下代碼。

const ml = require('ml-regression');
const csv = require('csvtojson');
const SLR = ml.SLR; // Simple Linear Regression

const csvFilePath = 'advertising.csv'; // Data
let csvData = [], // parsed Data
    X = [], // Input
    y = []; // Output

let regressionModel;

我把文件放在了項目的根目錄下,如果你想放在其他地方,請記得更新 csvFilePath。

現在我們使用 csvtojson 的 fromFile 方法加載數據文件:

csv()
    .fromFile(csvFilePath)
    .on('json', (jsonObj) => {
        csvData.push(jsonObj);
    })
    .on('done', () => {
        dressData(); // To get data points from JSON Objects
        performRegression(); 
    });

3. 打包數據,準備執行

JSON 對象被存儲在 csvData 中,我們還需要輸入數據點數組和輸出數據點。我們通過一個填充 X 和 Y 變量的 dressData 函數來運行數據。

function dressData() {
    /**
     * One row of the data object looks like:
     * {
     *   TV: "10",
     *   Radio: "100",
     *   Newspaper: "20",
     *   "Sales": "1000"
     * }
     *
     * Hence, while adding the data points,
     * we need to parse the String value as a Float.
     */
    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); // Train the model on training data
    console.log(regressionModel.toString(3));
    predictOutput();
}

performRegression 函數有一個方法 toString,它為浮點輸出獲取一個名為 precision 的參數。predictOutput 函數能讓你輸入數值,然后將模型的輸出傳到控制臺。它是這樣的(注意,我使用的是 Node.js 的 readline 工具):

function predictOutput() {
    rl.question('Enter input X for prediction (Press CTRL+C to exit) : ', (answer) => {
        console.log(`At X = ${answer}, y =  ${regressionModel.predict(parseFloat(answer))}`);
        predictOutput();
    });
}

以下是為了增加閱讀用戶的代碼

const readline = require('readline'); // For user prompt to allow predictions

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; // Simple Linear Regression

const csvFilePath = 'advertising.csv'; // Data
let csvData = [], // parsed Data
    X = [], // Input
    y = []; // Output

let regressionModel;

const readline = require('readline'); // For user prompt to allow predictions

const rl = readline.createInterface({
    input: process.stdin, 
    output: process.stdout
});

csv()
    .fromFile(csvFilePath)
    .on('json', (jsonObj) => {
        csvData.push(jsonObj);
    })
    .on('done', () => {
        dressData(); // To get data points from JSON Objects
        performRegression(); 
    });

function performRegression() {
    regressionModel = new SLR(X, y); // Train the model on training data
    console.log(regressionModel.toString(3));
    predictOutput();
}

function dressData() {
    /**
     * One row of the data object looks like:
     * {
     *   TV: "10",
     *   Radio: "100",
     *   Newspaper: "20",
     *   "Sales": "1000"
     * }
     *
     * Hence, while adding the data points,
     * we need to parse the String value as a Float.
     */
    csvData.forEach((row) => {
        X.push(f(row.Radio));
        y.push(f(row.Sales));
    });
}

function f(s) {
    return parseFloat(s);
}

function predictOutput() {
    rl.question('Enter input X for prediction (Press CTRL+C to exit) : ', (answer) => {
        console.log(`At X = ${answer}, y =  ${regressionModel.predict(parseFloat(answer))}`);
        predictOutput();
    });
}

到你的終端上運行 node index.js,得到的輸出會是這樣:

$ node index.js
f(x) = 0.202 * x + 9.31
Enter input X for prediction (Press CTRL+C to exit) : 151.***t X = 151.5, y =  39.98974927911285
Enter input X for prediction (Press CTRL+C to exit) :

恭喜!你剛剛在 JavaScript 中訓練了***個線性回歸模型。(PS. 你注意到速度了嗎?)

責任編輯:張子龍 來源: 機器之心
相關推薦

2021-11-02 09:40:50

TensorFlow機器學習人工智能

2025-03-04 08:00:00

機器學習Rust開發

2020-11-19 10:04:45

人工智能

2022-08-09 13:44:37

機器學習PySpark M數據分析

2024-06-13 08:36:11

2019-10-23 08:00:00

Flask機器學習人工智能

2024-08-15 14:48:57

2024-09-09 11:45:15

ONNX部署模型

2017-04-06 09:20:10

機器學習模型信用卡詐騙

2019-01-23 11:12:42

機器學習機器模型預測工資

2024-09-30 05:43:44

2020-09-22 14:59:52

機器學習人工智能計算機

2017-07-13 10:12:58

機器學習

2017-03-24 15:58:46

互聯網

2023-02-07 16:36:34

機器學習Docker無服務器

2018-07-27 16:18:30

PythonTwitter機器人

2017-08-25 14:05:01

機器學習算法模型

2022-06-02 15:42:05

Python機器學習

2021-04-29 15:29:52

機器學習人工智能AI

2019-07-23 10:22:11

TensorFlow.Python機器學習
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: www操操| 欧美激情va永久在线播放 | 天天操天天干天天曰 | 一区二区免费在线观看 | 欧美激情一区 | 91免费电影 | 粉嫩av久久一区二区三区 | 欧美成人第一页 | 99精品视频在线观看免费播放 | 精品久久久久久久久久久久 | 国产精品视频播放 | 国产精品久久久久久婷婷天堂 | 日本欧美大片 | 99视频在线免费观看 | 天天躁日日躁狠狠的躁天龙影院 | 日本久久精品视频 | 搞黄网站在线观看 | 日韩视频免费看 | 精品久久久久久久久久久久 | 精品视频一区二区 | 国产91在线 | 亚洲 | 欧美日本久久 | 91传媒在线观看 | 色婷婷久久久亚洲一区二区三区 | 欧美精品在线一区二区三区 | 国产午夜精品久久 | 久久久久国产一区二区三区 | 久久成人一区 | 午夜精品久久久久久久久久久久久 | 精品国产乱码久久久久久1区2区 | 亚洲午夜在线 | 成人小视频在线免费观看 | 久久久久久久一区 | 第一福利社区1024 | 日韩免费在线视频 | 日本不卡一二三 | 天天射中文| 欧美三区| 中文字幕在线一区二区三区 | 国产一区二区三区视频在线观看 | 狠狠操狠狠色 |