Astăzi vom afla despre învățarea automată în JS și Da, dacă citiți bine.
Învățarea automată la JS
JavaScript?! Nu ar trebui să utilizați Python? Sunt nebun să încerc acele calcule în JavaScript? Încerc să acționez calm folosind o limbă care nu este Python sau R? Scikit-Află nu funcționează nici măcar pe JavaScript?
Răspuns scurt: Nu. Nu sunt nebun.
Răspuns mult: Este posibil și este surprins că dezvoltatorii nu au la plătit atenția că merită. În ceea ce privește Scikit-Aflați, oamenii lui JS și-au creat propriul set de biblioteci pentru a-l contracara și voi folosi și unul. Dar mai întâi, puțin despre învățarea automată.
Potrivit lui Arthur Samuel, învățarea automată oferă computere cu capacitatea de a învăța fără a fi programată în mod explicit. Cu alte cuvinte, acesta oferă calculatorului capacitatea de a învăța prin ea însăși și de a executa instrucțiunile corecte, fără instrucțiuni.
a existat de ceva timp, cu Google de la Strategia de Mobile Primul la primul .
De ce nu este JavaScript menționat cu ml?
- este foarte lent. (Acesta este un mit)
- Manipularea matricelor este dificilă (există biblioteci, de exemplu Math.Js).
- Doar îngrijorat de dezvoltarea web (undeva, nod. Js este Râzând la acest lucru.)
- Bibliotecile sunt de obicei făcute pentru Python. (Oamenii JS nu sunt în spatele)
Există o mână de librării în JavaScript cu algoritmi de învățare a mașinilor pre-proiectate, cum ar fi regresia liniară, SVM-urile, naiv-bayes etc. Iată unele dintre ele,
- Natural (rețele neuronale)
- naturale (prelucrarea limbajului natural)
- convertjs ( Rețele neuronale convoluționale)
- MLJS (un set de sublibrari cu o varietate de funcții)
- Neatptico (rețele neuronale)
- webdnn (învățare profundă)
/ li>
Vom folosi biblioteca de regresie MLJS pentru a efectua o vrăjitorie de regresie liniară Hahaha.
Pasul 1. Instalați bibliotecile
$ yarn add ml-regression csvtojson
sau dacă vă place npm
$ npm install ml-regression csvtojson
ml-regresie face ceea ce implică numele.
CSVTojson este a Analizor rapid CSV pentru NODE.JS care vă permite să încărcați fișierele de date CSV și să le convertiți în JSON.
Descărcați fișierul de date (.csv) de aici și puneți-l în cadrul proiectului dvs.
Presupunând că ați inițializat deja un proiect NPM gol, deschideți fișierul index.js și introduceți următoarele. (Puteți copia / lipi dacă doriți, dar prefer să vă scrieți singuri pentru o mai bună înțelegere.)
const ml = require('ml-regression');const csv = require('csvtojson');const SLR = ml.SLR; // Regresión lineal simpleconst csvFilePath = 'advertising.csv'; // Datoslet csvData = , // Datos analizadosX = , // entraday = ; // salidalet regressionModel;
Acum vom folosi Metoda de la CSvTojson pentru a încărca fișierul de date Salvați în CSDDATA sunt bine, obiecte și avem nevoie de o serie de puncte de date de intrare, precum și puncte de date de ieșire. Vom executa datele noastre printr-o funcție de rochie, care va umple variabilele noastre x și.
function dressData() {/*** Una línea del objeto de datos tiene el aspecto siguiente:* {* TV: "10",* Radio: "100",* Newspaper: "20",* "Sales": "1000"* }** Por lo tanto, al agregar los puntos de datos, necesitamos analizar el valor* de la cadena como un flotador.*/csvData.forEach((row) => {X.push(f(row.Radio));y.push(f(row.Sales));});}function f(s) {return parseFloat(s);}
instruiți modelul dvs. și începeți să preziceți
acum că datele noastre au fost îmbrăcate cu succes, este timpul să ne antrenăm modelul.
Pentru aceasta, hai să scriem o funcție de performanță:
función performRegression() {regressionModel = nuevo SLR(X, y); // Capacitar al modelo en datos de formaciónconsole.log(regressionModel.toString(3));predictOutput();}
Modelul de regresie are o metodă de șir care ia un parametru numit Precizie pentru ieșirile de comă plutitoare.
Funcția Predictutput vă permite să introduceți valorile de intrare și trimiteți ieșirea furnizată de o consolă dvs.
Aceasta este ceea ce pare: (Țineți minte că folosesc utilitarul de lectură NODE.JS)
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();});}
și aici este codul Pentru a adăuga intrarea citită a utilizatorului:
const readline = require('readline'); // Para que el usuario pida que se permitan las prediccionesconst rl = readline.createInterface({input: process.stdin,output: process.stdout});
Suntem terminați!
Dacă ați urmat pașii, acesta este modul în care ar trebui să vă vedeți index.js:
const ml = require('regresión ml-');const csv = require('csvtojson');const SLR = ml.SLR; // Regresión lineal simpleconst csvFilePath = 'advertising.csv'; // Datoslet csvData = , // Datos analizadosX = , // Entraday = ; // Salidadejemos que regressionModel;const readline = require('readline'); // Para que el usuario pida que se permitan las prediccionesconst rl = readline.createInterface({ {)entrada: process.stdin,salida: process.stdout});csv().desdeFile(csvFilePath).on('json', (jsonObj) => {csvData.push(jsonObj);}).on('done', () => {dressData(); // Para obtener puntos de datos de JSON ObjectsperformRegression();});función performRegression() {regressionModel = nuevo SLR(X, y); // Capacitar al modelo en datos de formaciónconsole.log(regressionModel.toString(3));predictOutput();}función dressData() {/**Una fila del objeto de datos tiene el mismo aspecto:* {* TV: "10",* Radio: "100",Periódico: "20","Ventas": "1000"* }*Por lo tanto, al añadir los puntos de datos,necesitamos analizar el valor de la cadena como un flotador.*/csvData.forEach((row) => { {svData.forEachX.push(f(row.Radio));y.push(f(fila.Ventas));});}función f(s)devuelve parseFloat(s);}función predictOutput() {rl.question('Enter input X for prediction (Presione CTRL+C para salir) : ', (respuesta) => {console.log(`At X = ${respuesta}, y = ${regressionModel.predict(parseFloat(respuesta))}`);predictOutput();});}
du-te la Terminalul dvs. și rulați nodul index.js și ceva de genul acesta va fi generat:
nodo index.jsIntroduce la entrada X para la predicción (Presione CTRL+C para salir) : 151.5f(x) = 0.202 * x + 9.31Introduzca la entrada X para la predicción (Presione CTRL+C para salir):En X = 151,5, y = 39,989749279911285