Aujourd’hui, nous en apprendrons sur l’apprentissage automatique dans JS et oui, si vous lisez bien.
Apprentissage automatique à JS
JavaScript ?! Ne devriez-vous pas utiliser Python? Suis-je fou d’essayer ces calculs en JavaScript? Est-ce que j’essaie d’agir calmement en utilisant une langue qui n’est pas python ou r? Scikit-apprendre ne fonctionne même pas sur JavaScript?
Réponse courte: Non, je ne suis pas fou.
Longue réponse: c’est possible et il est surpris que les développeurs ne soient pas lui a tenu l’attention qu’elle mérite. En ce qui concerne Scikit-apprendre, les personnes de JS ont créé leur propre ensemble de bibliothèques pour la contrecarrer, et je vais également en utiliser un. Mais d’abord, un peu sur l’apprentissage automatique.
Selon Arthur Samuel, l’apprentissage automatique fournit aux ordinateurs la capacité d’apprendre sans être programmée explicitement. En d’autres termes, il donne à l’ordinateur la capacité d’apprendre par lui-même et d’exécuter les instructions correctes, sans vous instructions.
a été existé depuis un certain temps, avec Google de la stratégie de Mobile d’abord au premier. .
Pourquoi n’est-ce pas mentionné Javascript avec ML?
- est très lent. (Ceci est un mythe)
- La manipulation des matrices est difficile (il existe des bibliothèques, par exemple des maths.js).
- vient de s’inquiéter du développement Web (quelque part, noeud. JS est Rire de cela.)
- Les bibliothèques sont généralement faites pour Python. (JS Les gens ne sont pas derrière)
Il y a une poignée de librairies dans JavaScript avec des algorithmes d’apprentissage de machine pré-conçu, tels que la régression linéaire, les SVM, les baies naïfs, etc. Voici certains d’entre eux,
- Natural (Neuronal Networks)
- Natural (Traitement des langues naturelles)
- convertjs ( Réseaux de neurones convolutifs)
- MLJS (un ensemble de sublibramies avec une variété de fonctions)
- neatptico (réseaux neuronaux)
- webdnn (apprentissage profond)
/ Li>
Nous allons utiliser la bibliothèque de régression de la MLJS pour effectuer une sensation de régression linéaire Hahaha.
Étape 1. Installez les bibliothèques
$ yarn add ml-regression csvtojson
ou si vous aimez NPM
$ npm install ml-regression csvtojson
ml-regression fait ce que le nom implique.
csvtojson est un Analyseur de CSV rapide pour Node.js qui vous permet de charger des fichiers de données CSV et de les convertir en JSON.
Téléchargez le fichier de données (.csv) à partir d’ici et mettez-le dans votre projet.
En supposant que vous ayez déjà initialisé un projet NPM vide, ouvrez le fichier Index.js et entrez ce qui suit. (Vous pouvez copier / coller si vous le souhaitez, mais je préfère que vous vous écrisiez vous-même pour une meilleure compréhension.)
Nous allons maintenant utiliser le Méthode de PILE de csvtojson à charger notre fichier de données.
csv().fromFile(csvFilePath).on('json', (jsonObj) => {csvData.push(jsonObj);}).on('done', () => {dressData(); // Para obtener puntos de datos de objetos JSONperformRegression();});
données du pansement pour la préparer à son exécution
Objets JSON que nous Enregistrer dans CSVData, des objets et nous avons besoin d’une série de points de données d’entrée ainsi que de points de données de sortie. Nous allons exécuter nos données via une fonction dressdata qui remplira nos variables x et.
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);}
former votre modèle et commencer à prédire
maintenant que nos données ont été habillées avec succès, il est temps de former notre modèle.
Pour cela, écrivez une fonction de performance de fonction:
función performRegression() {regressionModel = nuevo SLR(X, y); // Capacitar al modelo en datos de formaciónconsole.log(regressionModel.toString(3));predictOutput();}
Le modèle de régression a une méthode de chaîne qui prend un paramètre appelé Precision pour les sorties de coma flottantes.
La fonction de prédicte de prédicte vous permet de saisir des valeurs d’entrée et d’envoyer la sortie fournie à votre console.
C’est ce qu’il semble: (Gardez à l’esprit que j’utilise l’utilitaire de ligne de lecture nœud.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();});}
et voici le code Pour ajouter l’entrée de lecture de l’utilisateur:
const readline = require('readline'); // Para que el usuario pida que se permitan las prediccionesconst rl = readline.createInterface({input: process.stdin,output: process.stdout});
nous sommes terminés!
Si vous avez suivi les étapes, voici comment vous devriez voir votre 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();});}
aller à Votre terminal et exécutez le nœud Index.js et quelque chose comme celui-ci sera généré:
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