Hoje vamos aprender sobre a aprendizagem automática em JS, e sim, se você estiver lendo bem.
Aprendizagem Automática em JS
JavaScript?! Você não deve estar usando python? Eu sou louco para experimentar esses cálculos em JavaScript? Estou tentando agir com calma usando uma linguagem que não é python ou r? scikit-learn ni siquiera funciona en JavaScript?
Respuesta corta: No. No estoy loca.
Respuesta larga: Es posible y me sorprende que los desarrolladores no le hayan prestado la atención que se merece. No que diz respeito a Scikit-Learn, o povo de JS criaram seu próprio conjunto de bibliotecas para neutralizá-lo, e também vou usar um. Mas primeiro, um pouco sobre a aprendizagem automática.
De acordo com Arthur Samuel, a aprendizagem automática fornece computadores com a capacidade de aprender sem serem agendados explicitamente. Em outras palavras, dá ao computador a capacidade de aprender por si só e executar as instruções corretas, sem instruções.
Existe há algum tempo, com o Google da estratégia de móvel primeiro para o primeiro .
Por que não é javascript mencionado com ml?
- é muito lento. (Este é um mito)
- a manipulação de matrizes é difícil (há bibliotecas, por exemplo, math.js).
- Apenas preocupado com o desenvolvimento da Web (em algum lugar, nó. JS é Rindo disso.)
- As bibliotecas são geralmente feitas para o Python. (JS As pessoas não estão atrás)
Há um punhado de livrarias em Javascript com algoritmos pré-projetados de aprendizagem de máquina, como regressão linear, svms, ingênuos, etc. Aqui estão alguns deles,
- Natural (redes neuronais)
- Natural (processamento de linguagem natural)
- convertjs ( redes neurais convolutivas)
- mljs (um conjunto de sublibraries com uma variedade de funções)
- weatformic (redes neuronais)
- webdnn (aprendizagem profunda)
/ li>
Vamos usar a biblioteca de regressão MLJS para realizar uma regressão linear Hahaha.
etapa 1. Instale as bibliotecas
$ yarn add ml-regression csvtojson
ou se você gosta de npm
ml-regressão faz o que o nome indica.
csvtojson é um Analisador CSV rápido para Node.js que permite carregar arquivos de dados CSV e convertê-los para JSON.
Baixe o arquivo de dados (.csv) daqui e coloque-o dentro do seu projeto.
Assumindo que você já inicializou um projeto NPM vazio, abra o arquivo index.js e digite o seguinte. (Você pode copiar / colar se desejar, mas eu prefiro que você escreva-se para uma melhor compreensão.)
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 vamos usar o FromPile método de csvtojson para carregar nosso arquivo de dados.
csv().fromFile(csvFilePath).on('json', (jsonObj) => {csvData.push(jsonObj);}).on('done', () => {dressData(); // Para obtener puntos de datos de objetos JSONperformRegression();});
dados do curativo para prepará-lo para sua execução
JSON Objetos que nós Salvar no CSVData estão bem, objetos e precisamos de uma série de pontos de dados de entrada, bem como pontos de dados de saída. Executaremos nossos dados por meio de uma função DressData que preencherá nossas variáveis 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);}
Treine seu modelo e comece a prever
agora que nossos dados foram vestidos com sucesso, é hora de treinar nosso modelo.
Para isso, vamos escrever uma função realgressão:
función performRegression() {regressionModel = nuevo SLR(X, y); // Capacitar al modelo en datos de formaciónconsole.log(regressionModel.toString(3));predictOutput();}
O modelo de regressão tem um método de string que leva um parâmetro chamado precisão para as saídas de coma flutuantes.
A função PredicTutput permite inserir valores de entrada e envia a saída fornecida pelo seu console.
É isso que parece: (tenha em mente que estou usando o nó.js LEITURA LINE LINE)
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 aqui está o código Para adicionar a entrada de leitura do usuário:
const readline = require('readline'); // Para que el usuario pida que se permitan las prediccionesconst rl = readline.createInterface({input: process.stdin,output: process.stdout});
Estamos terminados!
Se você seguisse as etapas, é assim que você deve 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();});}
vá para Seu terminal e executar o nó index.js e algo assim será gerado:
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