Aprendizaxe automática con JavaScript: Parte 1

Hoxe aprenderemos sobre a aprendizaxe automática en JS e si, se está a ler ben.

Aprendizaxe automática en JS

JavaScript?! Non debería usar Python? Estou tolo por probar eses cálculos en JavaScript? Estou tentando actuar con calma usando un idioma que non é Python ou r? Scikit-Learn Nin sequera funciona en JavaScript?

Resposta curta: Non. Non estou tolo.

longa resposta: é posible e sorpréndese que os desenvolvedores non o teñen pagoulle a atención que merecía. No que se refire a Scikit-Learn, a xente de JS creou o seu propio conxunto de bibliotecas para contrarrestarlo e tamén vou usar un. Pero primeiro, un pouco sobre a aprendizaxe automática.

Segundo Arthur Samuel, a aprendizaxe automática proporciona ordenadores coa capacidade de aprender sen ser programada explícitamente. Noutras palabras, dá á computadora a capacidade de aprender por si só e executar as instrucións correctas, sen ti instrucións.

existiu durante bastante tempo, con Google desde a estratexia de Mobile primeiro ao primeiro .

Por que non é mencionado JavaScript con ML?

  • é moi lento. (Este é un mito)
  • A manipulación de matrices é difícil (hai bibliotecas, por exemplo math.js).
  • só preocupado polo desenvolvemento web (nalgún lugar, nodo. JS é Rindo a isto.)
  • As bibliotecas adoitan ser feitas para Python. (A xente de JS non está detrás)

Hai un puñado de librerías en javascript con algoritmos de aprendizaxe pre-deseñados, como a regresión lineal, SVMS, NOIVE-Bayes, etc. Aquí tes algúns deles,

  • Natural (redes neuronais)
  • natural (procesamento de idioma natural)
  • / li>

  • conversión ( Redes neuronais convolucionais)
  • MLJS (un conxunto de sublibrarios cunha variedade de funcións)
  • neatptico (redes neuronais)
  • webdnn (aprendizaxe profunda)

Usaremos a biblioteca de regresión de MLJS para realizar unha bruxería de regresión lineal HAHAHA.

Paso 1. Instalar as bibliotecas

$ yarn add ml-regression csvtojson

ou se che gusta NPM

$ npm install ml-regression csvtojson

ml-regresión ¿O que implica o nome.

csvtojson é un Analizador de CSV rápido para node.js que permite cargar ficheiros de datos CSV e convertelos a JSON.

Descargue o ficheiro de datos (.csv) de aquí e colócao dentro do seu proxecto.

Supoñendo que xa inicializou un proxecto de NPM baleiro, abra o ficheiro index.js e introduza o seguinte. (Pode copiar / pegar se o desexa, pero prefiro que escriba a si mesmo por unha mellor comprensión.)

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;

Agora imos usar o Método de csvtojson para cargar o noso ficheiro de datos.

csv().fromFile(csvFilePath).on('json', (jsonObj) => {csvData.push(jsonObj);}).on('done', () => {dressData(); // Para obtener puntos de datos de objetos JSONperformRegression();});

Datos do aderezo para preparalo para os seus obxectos de execución

json que nós Aforrar en CSVData está ben, obxectos e necesitamos unha serie de puntos de datos de entrada, así como puntos de saída de datos. Executaremos os nosos datos a través dunha función de vestido que cubrirá as nosas variables 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);}

adestrar o seu modelo e comezar a predicir

agora que os nosos datos foron vestidos con éxito, é hora de adestrar o noso modelo.

Para iso, imos escribir unha función de performante:

función performRegression() {regressionModel = nuevo SLR(X, y); // Capacitar al modelo en datos de formaciónconsole.log(regressionModel.toString(3));predictOutput();}

O modelo de regresión ten un método de cadea que leva un parámetro chamado precisión para saídas de coma flotante.

A función predicutora permítelle introducir valores de entrada e enviar a saída proporcionada a súa consola.

Isto é o que parece: (Teña presente que estou a usar a utilidade de liña de lectura de 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();});}

e aquí está o código Para engadir a entrada de lectura do usuario:

const readline = require('readline'); // Para que el usuario pida que se permitan las prediccionesconst rl = readline.createInterface({input: process.stdin,output: process.stdout});

Estamos rematados!

Se seguimos os pasos, así é como debería ver o seu 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 O seu terminal e executar o nodo index.js e algo así será xerado:

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

Deixa unha resposta

O teu enderezo electrónico non se publicará Os campos obrigatorios están marcados con *