js-regression
Package provides javascript implementation of linear regression and logistic regression
![Coverage Status](https://coveralls.io/repos/github/chen0040/js-regression/badge.svg?branch=master)
Install
npm install js-regression
Usage
Linear Regression
The sample code below illustrates how to run the multiple linear regression (polynomial in this case):
var jsregression = require('js-regression');
var data = [];
for(var x = 1.0; x < 100.0; x += 1.0) {
var y = 2.0 + 5.0 * x + 2.0 * x * x + Math.random() * 1.0;
data.push([x, x * x, y]);
}
var regression = new jsregression.LinearRegression({
alpha: 0.001,
iterations: 300,
lambda: 0.0
});
var model = regression.fit(data);
console.log(model);
var testingData = [];
for(var x = 1.0; x < 100.0; x += 1.0) {
var actual_y = 2.0 + 5.0 * x + 2.0 * x * x + Math.random() * 1.0;
var predicted_y = regression.transform([x, x * x]);
console.log("actual: " + actual_y + " predicted: " + predicted_y);
}
Logistic Regression
The sample code below illustrates how to run the logistic regression on the iris datsets to classify whether a data row belong to species Iris-virginica:
var jsregression = require('js-regression');
var iris = require('js-datasets-iris');
var logistic = new jsregression.LogisticRegression({
alpha: 0.001,
iterations: 1000,
lambda: 0.0
});
iris.shuffle();
var trainingDataSize = Math.round(iris.rowCount * 0.8);
var trainingData = [];
var testingData = [];
for(var i=0; i < iris.rowCount ; ++i) {
var row = [];
row.push(iris.data[i][0]);
row.push(iris.data[i][1]);
row.push(iris.data[i][2]);
row.push(iris.data[i][3]);
row.push(iris.data[i][4] == "Iris-virginica" ? 1.0 : 0.0);
if(i < trainingDataSize) {
trainingData.push(row);
} else {
testingData.push(row);
}
}
var model = logistic.fit(trainingData);
console.log(model);
for(var i=0; i < testingData.length; ++i){
var probabilityOfSpeciesBeingIrisVirginica = logistic.transform(testingData[i]);
var predicted = logistic.transform(testingData[i]) >= logistic.threshold ? 1 : 0;
console.log("actual: " + testingData[i][4] + " probability of being Iris-virginica: " + probabilityOfSpeciesBeingIrisVirginica);
console.log("actual: " + testingData[i][4] + " predicted: " + predicted);
}
Multi-Class Classification using One-vs-All Logistic Regression
The sample code below illustrates how to run the multi-class classifier on the iris datasets to classifiy the species of each data row:
var classifier = new jsregression.MultiClassLogistic({
alpha: 0.001,
iterations: 1000,
lambda: 0.0
});
iris.shuffle();
var trainingDataSize = Math.round(iris.rowCount * 0.9);
var trainingData = [];
var testingData = [];
for(var i=0; i < iris.rowCount ; ++i) {
var row = [];
row.push(iris.data[i][0]);
row.push(iris.data[i][1]);
row.push(iris.data[i][2]);
row.push(iris.data[i][3]);
row.push(iris.data[i][4]);
if(i < trainingDataSize){
trainingData.push(row);
} else {
testingData.push(row);
}
}
var result = classifier.fit(trainingData);
console.log(result);
for(var i=0; i < testingData.length; ++i){
var predicted = classifier.transform(testingData[i]);
console.log("actual: " + testingData[i][4] + " predicted: " + predicted);
}
Usage In HTML
Include the "node_modules/js-regression/build/jsregression.min.js" (or "node_modules/js-regression/src/jsregression.js") in your HTML <script> tag
The codes in the following html files illustrates how to use them in html pages: