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)
- conversión ( Redes neuronais convolucionais)
- MLJS (un conxunto de sublibrarios cunha variedade de funcións)
- neatptico (redes neuronais)
- webdnn (aprendizaxe profunda)
/ li>
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