https://github.com/winkjs/wink-regression-tree
Decision Tree to predict the value of a continuous target variable
https://github.com/winkjs/wink-regression-tree
continuous-variable decision-trees machine-learning prediction recursive-partitioning regression-trees
Last synced: about 1 year ago
JSON representation
Decision Tree to predict the value of a continuous target variable
- Host: GitHub
- URL: https://github.com/winkjs/wink-regression-tree
- Owner: winkjs
- License: mit
- Created: 2017-09-08T12:04:36.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2023-02-27T16:32:54.000Z (over 3 years ago)
- Last Synced: 2025-04-13T02:19:02.343Z (about 1 year ago)
- Topics: continuous-variable, decision-trees, machine-learning, prediction, recursive-partitioning, regression-trees
- Language: JavaScript
- Homepage: http://winkjs.org/wink-regression-tree/
- Size: 1.61 MB
- Stars: 16
- Watchers: 5
- Forks: 9
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# wink-regression-tree
Decision Tree to predict the value of a continuous target variable
### [](https://travis-ci.org/winkjs/wink-regression-tree) [](https://coveralls.io/github/winkjs/wink-regression-tree?branch=master) [](http://inch-ci.org/github/winkjs/wink-regression-tree) [](https://david-dm.org/winkjs/wink-regression-tree) [](https://david-dm.org/winkjs/wink-regression-tree?type=dev) [](https://gitter.im/winkjs/Lobby)

Predict the value of a continuous variable such as price, turn around time, or mileage using **`wink-regression-tree`**.
### Installation
Use [npm](https://www.npmjs.com/package/wink-regression-tree) 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:
| Model | MPG | Cylinders | Displacement | Power | Weight | Acceleration | Year | Origin |
|--------------|-----|----------|------------------|----------|-----------|----|---|-----|
|Toyota Mark II|20|6|large displacement|high power|high weight|slow|73|Japan|
The code below provides a potential configuration to predict the value of miles per gallon:
```javascript
// 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](https://npm.runkit.com/wink-regression-tree) 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](https://github.com/winkjs/wink-regression-tree/issues) or consider fixing it and sending a pull request.
### About wink
[Wink](http://winkjs.org/) 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](http://graype.in/).
It is licensed under the terms of the MIT License.