Currently, the main languages for modeling in the field of machine learning are Python and R. The machine learning framework Angel launched by Tencent not long ago supports Java and Scala. The author of this article, Abhishek Soni, tells us through his actions that JavaScript can also be used to develop machine learning models. JavaScript? Shouldn’t I be using Python? Even Scikit-learn doesn’t work on JavaScript. It is possible, in fact, I am surprised at how little developers have paid attention to it. In the case of Scikit-learn, Javascript developers have actually come up with a library that does the trick, which will be covered in this article. So, let’s see what Javascript can do for machine learning. According to artificial intelligence pioneer Arthur Samuel, machine learning provides computers with the ability to learn without being explicitly programmed. In other words, it enables computers to learn on their own and execute correct instructions without humans providing all the guidance. Google has long since switched its mobile-first strategy to an AI-first one. Why is JavaScript not mentioned in the machine learning community?
There are some pre-made libraries available in JavaScript that contain some machine learning algorithms like Linear Regression, SVM, Naive Bayes, etc. Here are some of them.
First, we will use the mljs regression library to perform some linear regression operations. Reference code: https://github.com/abhisheksoni27/machine-learning-with-js 1. Install the library $ npm install ml-regression csvtojson $ yarn add ml-regression csvtojson ml-regression, as its name suggests, is responsible for linear regression in machine learning. csvtojson is a fast CSV parser for node.js that allows loading CSV data files and converting them to JSON. 2. Initialize and load data Download the data file (.csv) and add it to your project. Link: http://www-bcf.usc.edu/~gareth/ISL/Advertising.csv If you have initialized an empty npm project, open index.js and enter the following code. const ml = require('ml-regression'); const csv = require('csvtojson'); const SLR = ml.SLR; // Simple Linear Regression const csvFilePath = 'advertising.csv'; // Data let csvData = [], // parsed Data X = [], // Input y = []; // Output let regressionModel; I put the file in the root of my project, if you want to put it somewhere else, remember to update the csvFilePath. Now we use the fromFile method of csvtojson to load the data file: csv() .fromFile(csvFilePath) .on('json', (jsonObj) => { csvData.push(jsonObj); }) .on('done', () => { dressData(); // To get data points from JSON Objects performRegression(); }); 3. Pack data and prepare for execution The JSON object is stored in csvData and we also need an array of input data points and an output data point. We run the data through a dressData function which populates the X and Y variables. function dressData() { /** * One row of the data object looks like: * { * TV: "10", * Radio: "100", * Newspaper: "20", * "Sales": "1000" * } * * Hence, while adding the data points, * we need to parse the String value as a Float. */ csvData.forEach((row) => { X.push(f(row.Radio)); y.push(f(row.Sales)); }); } function f(s) { return parseFloat(s); } 4. Train the model and start prediction Now that the data is packaged, it’s time to train our model. To do this, we need to write a performRegression function: function performRegression() { regressionModel = new SLR(X, y); // Train the model on training data console.log(regressionModel.toString(3)); predictOutput(); } The performRegression function has a method toString that takes a parameter called precision for floating point output. The predictOutput function lets you input a numeric value and then sends the output of the model to the console. It looks like this (note that I'm using the Node.js readline tool): 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(); }); } The following is the code to increase the reading user const readline = require('readline'); // For user prompt to allow predictions const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); 5. You’re done! Following the above steps, your index.js should look like this: const ml = require('ml-regression'); const csv = require('csvtojson'); const SLR = ml.SLR; // Simple Linear Regression const csvFilePath = 'advertising.csv'; // Data let csvData = [], // parsed Data X = [], // Input y = []; // Output let regressionModel; const readline = require('readline'); // For user prompt to allow predictions const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); csv() .fromFile(csvFilePath) .on('json', (jsonObj) => { csvData.push(jsonObj); }) .on('done', () => { dressData(); // To get data points from JSON Objects performRegression(); }); function performRegression() { regressionModel = new SLR(X, y); // Train the model on training data console.log(regressionModel.toString(3)); predictOutput(); } function dressData() { /** * One row of the data object looks like: * { * TV: "10", * Radio: "100", * Newspaper: "20", * "Sales": "1000" * } * * Hence, while adding the data points, * we need to parse the String value as a Float. */ csvData.forEach((row) => { X.push(f(row.Radio)); y.push(f(row.Sales)); }); } function f(s) { return parseFloat(s); } 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(); }); } Go to your terminal and run node index.js. The output you get should be something like this: $ node index.js f(x) = 0.202 * x + 9.31 Enter input X for prediction (Press CTRL+C to exit): 151.***t Enter input X for prediction (Press CTRL+C to exit) : Congratulations! You just trained your first linear regression model in JavaScript. (PS. Did you notice the speed?) |
<<: Flink Principles and Implementation: Architecture and Topology Overview
>>: Long Text Decryption Convolutional Neural Network Architecture
Today is International Museum Day. Have you visit...
In the process of team collaboration and developm...
Brother Xian has been feeling rather depressed la...
Recently, NASA has demonstrated whether it is pos...
Growing is not an easy job because you face so ma...
January 30 (Reporter Zhang Zhichang) After the fu...
Suzhou's smart transportation construction ha...
Course Contents: 1. My fate with emotional intelli...
Recently many friends have asked me why other peo...
Wang Ce VLOG personal short video experience shar...
In fact, everyone has read a lot of useful inform...
【Little Mushroom】Human Skeleton and Muscle Unders...
Carbon reduction, emission reduction...are these ...
The electric vehicle market is developing rapidly...
At present, the statement of "Hongmeng/Ark O...