Oggi impareremo l’apprendimento automatico in JS, e sì, se stai leggendo bene.
Apprendimento automatico su JS
JavaScript?! Non dovresti usare Python? Sono pazzo di provare quei calcoli in JavaScript? Sto cercando di agire con calma usando un linguaggio che non è python o r? Scikit-Learn non funziona nemmeno su JavaScript?
risposta breve: No. Non sono pazzo.
Risposta lunga: è possibile ed è sorpreso che gli sviluppatori non lo siano ha prestato attenzione che merita. Per quanto riguarda Scikit-Learn, la gente di JS ha creato il proprio insieme di biblioteche per contrastarlo, e ho anche intenzione di usarne uno. Ma prima, un po ‘di apprendimento automatico.
Secondo Arthur Samuel, l’apprendimento automatico fornisce computer con la capacità di imparare senza essere programmato esplicitamente. In altre parole, dà al computer la possibilità di imparare da sola ed eseguire le istruzioni corrette, senza che le istruzioni.
è stato esistito per un po ‘di tempo, con Google dalla strategia del cellulare prima al primo .
Perché non è JavaScript menzionato con ML?
- è molto lento. (Questo è un mito)
- La manipolazione delle matrici è difficile (ci sono biblioteche, ad esempio math.js).
- semplicemente preoccupato per lo sviluppo web (da qualche parte, il nodo. JS è Ridendo a questo.)
- Le librerie sono solitamente realizzate per Python. (Le persone JS non sono dietro)
Ci sono una manciata di librerie in JavaScript con algoritmi di apprendimento automatico pre-progettato, come la regressione lineare, SVMS, NAIVE-Bayes, ecc. Ecco alcuni di loro,
- naturali (neuronali reti)
- naturale (elaborazione del linguaggio naturale)
- convertjs ( Reti neurali contorzionali)
- mljs (un set di subballarie con una varietà di funzioni)
- neurptico (neuronali reti)
- webdnn (deep Learning)
/ li>
Utilizzeremo la Biblioteca di regressione MLJS per eseguire una regressione lineare stregoneria Hahaha.
Passaggio 1. Installare le librerie
$ yarn add ml-regression csvtojson
o se ti piace npm
$ npm install ml-regression csvtojson
ml-regression fa ciò che il nome implica.
csvtojson è a Analizzatore CSV veloce per Node.js che consente di caricare i file di dati CSV e convertirli in JSON.
Scarica il file di dati (.csv) da qui e mettilo nel tuo progetto.
Supponendo che tu abbia già inizializzato un progetto NPM vuoto, aprire il file index.js e inserisci quanto segue. (Puoi copiare / incollare se lo desideri, ma preferisco scriverlo da solo per una migliore comprensione.)
Ora useremo il Metodo frompile di CSVTOJSON per caricare il nostro file di dati.
csv().fromFile(csvFilePath).on('json', (jsonObj) => {csvData.push(jsonObj);}).on('done', () => {dressData(); // Para obtener puntos de datos de objetos JSONperformRegression();});
dati della medicazione per prepararlo per la sua esecuzione
gli oggetti json che noi Salva in CSvData, gli oggetti e abbiamo bisogno di una serie di punti dati di input e dei punti dati di output. Eseguiremo i nostri dati attraverso una funzione DressData che riempirà le nostre variabili x e.
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);}
Allena il tuo modello e iniziare PREDICTING
ORA che i nostri dati sono stati vestiti con successo, è tempo di addestrare il nostro modello.
Per questo, scriviamo una funzione performregression:
función performRegression() {regressionModel = nuevo SLR(X, y); // Capacitar al modelo en datos de formaciónconsole.log(regressionModel.toString(3));predictOutput();}
Il modello di regressione ha un metodo stringa che prende un parametro chiamato precisione per le uscite COMA galleggianti.
La funzione Predictupput consente di inserire i valori di ingresso e invia l’uscita fornita una console.
Questo è ciò che sembra: (tieni presente che sto usando l’utilità della linea di lettura del nodo.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();});}
ed ecco il codice Per aggiungere la voce di lettura dell’utente:
const readline = require('readline'); // Para que el usuario pida que se permitan las prediccionesconst rl = readline.createInterface({input: process.stdin,output: process.stdout});
siamo finiti!
Se hai seguito i passaggi, questo è come dovresti vedere il tuo 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();});}
Vai a Il terminale ed esegui il nodo INDEX.JS e qualcosa di simile verrà generato:
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