@tensorscript/ts-mlr
v1.0.4
Published
Multiple linear regression with TensorFlow
Downloads
40
Readme
@tensorscript/ts-mlr
Multiple Linear Regression with Tensorflow
Full Documentation
Installation
$ npm i @tensorscript/ts-mlr
Usage
Test against the Portland housing price dataset
import { MultipleLinearRegression, } from '@tensorscript/ts-mlr';
import ms from 'modelscript';
function scaleColumnMap(columnName) {
return {
name: columnName,
options: {
strategy: 'scale',
scaleOptions: {
strategy:'standard'
}
}
}
}
async function main(){
const housingdataCSV = await ms.csv.loadCSV('./test/mock/data/portland_housing_data.csv', {
colParser: {
sqft: 'number',
bedrooms: 'number',
price: 'number',
}
});
/*
housingdataCSV = [
{ sqft: 2104, bedrooms: 3, price: 399900 },
{ sqft: 1600, bedrooms: 3, price: 329900 },
...
{ sqft: 1203, bedrooms: 3, price: 239500 }
]
*/
const DataSet = new ms.DataSet(housingdataCSV);
DataSet.fitColumns({
columns: [
'sqft',
'bedrooms',
'price',
].map(scaleColumnMap),
returnData:true,
});
const independentVariables = [ 'sqft', 'bedrooms',];
const dependentVariables = [ 'price', ];
const x_matrix = DataSet.columnMatrix(independentVariables);
const y_matrix = DataSet.columnMatrix(dependentVariables);
/* x_matrix = [
[2014, 3],
[1600, 3],
];
y_matrix = [
[399900],
[329900],
];
const y_vector = ms.util.pivotVector(y_matrix)[ 0 ];// not used but just illustrative
// y_vector = [ 399900, 329900]
*/
const testSqft = DataSet.scalers.get('sqft').scale(1650);
const testBedrooms = DataSet.scalers.get('bedrooms').scale(3);
const input_x = [
testSqft,
testBedrooms,
]; // input_x: [ -0.4412732005944351, -0.2236751871685913 ]
const tfMLR = new MultipleLinearRegression();
const model = await tfMLR.train(x_matrix, y_matrix);
const scaledPrediction = await tfMLR.predict(input_x); // [ -0.3785287367962629 ]
const prediction = DataSet.scalers.get('price').descale(scaledPrediction); // prediction: 293081.4643348962
}
main();
This MLR module give you a similar ml.js interface for machine learning
// Similarly with ml.js
import ms from 'modelscript';
const MLR = ms.ml.Regression.MultivariateLinearRegression;
const regression = new MLR(x_matrix, y_matrix);
const MLJSscaledPrediction = regression.predict(input_x); //[ -0.3785287367962629 ],
const MLJSprediction = DataSet.scalers.get('price').descale(MLJSscaledPrediction); // prediction: 293081.4643348962
Testing
$ npm i
$ npm test
Contributing
Fork, write tests and create a pull request!
Misc
As of Node 8, ES modules are still used behind a flag, when running natively as an ES module
$ node --experimental-modules my-machine-learning-script.mjs
# Also there are native bindings that require Python 2.x, make sure if you're using Andaconda, you build with your Python 2.x bin
$ npm i --python=/usr/bin/python
License
MIT