Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including wink-regression-tree with all npm packages installed. Try it out:

/* eslint-disable no-console */ /* eslint-disable no-sync */ // Load wink-regression-tree. var regressionTree = require( 'wink-regression-tree' ); // Load cars training data set. // In practice an async mechanism may be used to // read data asynchronously and call `ingest()` on // every row of data read. var cars = require( 'wink-regression-tree/sample-data/cars.json' ); // Create a sample data to test prediction for // Ford Gran Torino, having "mpg of 14.5", very // large displacement, extremely high power, very // high weight, slow, and with origin as US. var input = { model: 'Ford Gran Torino', weight: 'very high weight', displacement: 'very large displacement', horsepower: 'extremely high power', origin: 'US', acceleration: 'slow' }; // Above record is not the part of training data. // Create an instance of the regression tree. var rt = regressionTree(); // Specify columns of the training data. var columns = [ { name: 'model', categorical: true, exclude: true }, { name: 'mpg', categorical: false, target: true }, { name: 'cylinders', categorical: true, exclude: false }, { name: 'displacement', categorical: true, exclude: false }, { name: 'horsepower', categorical: true, exclude: false }, { name: 'weight', categorical: true, exclude: false }, { name: 'acceleration', categorical: true, exclude: false }, { name: 'year', categorical: true, exclude: true }, { name: 'origin', categorical: true, exclude: false } ]; // Specify configuration for learning. var treeParams = { minPercentVarianceReduction: 0.5, minLeafNodeItems: 10, minSplitCandidateItems: 30, minAvgChildrenItems: 2 }; // Define the regression tree configuration using // `columns` and `treeParams`. rt.defineConfig( columns, treeParams ); // Ingest the data. cars.forEach( function ( row ) { rt.ingest( row ); } ); // Data ingested! Now time to learn from data!! console.log( rt.learn() ); // -> 16 (Number of Rules Learned) // Predict the **mean** value. var mean = rt.predict( input ); console.log( +mean.toFixed( 1 ) ); // -> 14.3 ( compare with actual mpg of 14.5 ) // In practice one may like to compute a range // or upper limit using the `modifier` function // during prediction. Note `size`, `mean`, and `stdev` // values, passed to this function, can be used // for computing the range or the upper limit.

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

wink-regression-tree v2.0.0

Decision Tree to predict the value of a continuous target variable

wink-regression-tree

Decision Tree to predict the value of a continuous target variable

Build Status Coverage Status Inline docs dependencies Status devDependencies Status Gitter

Predict the value of a continuous variable such as price, turn around time, or mileage using wink-regression-tree.

Installation

Use npm to install:

npm install wink-regression-tree --save

Getting Started

Here is an example of predicting car’s mileage (miles per gallon - mpg) from attributes like displacement, horsepower, acceleration, country of origin, and few more. A sample data row is given for quick reference:

ModelMPGCylindersDisplacementPowerWeightAccelerationYearOrigin
Toyota Mark II206large displacementhigh powerhigh weightslow73Japan

The code below provides a potential configuration to predict the value of miles per gallon:

// Load wink-regression-tree.
var regressionTree = require( 'wink-regression-tree' );

// Load cars training data set.
// In practice an async mechanism may be used to
// read data asynchronously and call `ingest()` on
// every row of data read.
var cars = require( 'wink-regression-tree/sample-data/cars.json' );

// Create a sample data to test prediction for
// Ford Gran Torino, having "mpg of 14.5", very
// large displacement, extremely high power, very
// high weight, slow, and with origin as US.
var input = {
  model: 'Ford Gran Torino',
  weight: 'very high weight',
  displacement: 'very large displacement',
  horsepower: 'extremely high power',
  origin: 'US',
  acceleration: 'slow'
};
// Above record is not the part of training data.

// Create an instance of the regression  tree.
var rt = regressionTree();

// Specify columns of the training data.
var columns = [
  { name: 'model', categorical: true, exclude: true },
  { name: 'mpg', categorical: false, target: true },
  { name: 'cylinders', categorical: true, exclude: false },
  { name: 'displacement', categorical: true, exclude: false },
  { name: 'horsepower', categorical: true, exclude: false },
  { name: 'weight', categorical: true, exclude: false },
  { name: 'acceleration', categorical: true, exclude: false },
  { name: 'year', categorical: true, exclude: true },
  { name: 'origin', categorical: true, exclude: false  }
];
// Specify configuration for learning.
var treeParams = {
  minPercentVarianceReduction: 0.5,
  minLeafNodeItems: 10,
  minSplitCandidateItems: 30,
  minAvgChildrenItems: 2
};
// Define the regression tree configuration using
// `columns` and `treeParams`.
rt.defineConfig( columns, treeParams );

// Ingest the data.
cars.forEach( function ( row ) {
  rt.ingest( row );
} );

// Data ingested! Now time to learn from data!!
console.log( rt.learn() );
// -> 16 (Number of Rules Learned)

// Predict the **mean** value.
var mean = rt.predict( input );
console.log( +mean.toFixed( 1 ) );
// -> 14.3 ( compare with actual mpg of 14.5 )

// In practice one may like to compute a range
// or upper limit using the `modifier` function
// during prediction. Note `size`, `mean`, and `stdev`
// values, passed to this function, can be used
// for computing the range or the upper limit.

Try experimenting with this example on Runkit in the browser.

Documentation

For detailed API docs, check out http://winkjs.org/wink-regression-tree/ URL!

Need Help?

If you spot a bug and the same has not yet been reported, raise a new issue or consider fixing it and sending a pull request.

About wink

Wink is a family of open source packages for Statistical Analysis, Natural Language Processing and Machine Learning in NodeJS. The code is thoroughly documented for easy human comprehension and has a test coverage of ~100% for reliability to build production grade solutions.

Copyright & License

wink-regression-tree is copyright 2017-18 GRAYPE Systems Private Limited.

It is licensed under the terms of the MIT License.

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free