Home

Awesome

Decision Tree for Node.js

This Node.js module implements a Decision Tree using the ID3 Algorithm

Installation

npm install decision-tree

Usage

Import the module

var DecisionTree = require('decision-tree');

Prepare training dataset

var training_data = [
  {"color":"blue", "shape":"square", "liked":false},
  {"color":"red", "shape":"square", "liked":false},
  {"color":"blue", "shape":"circle", "liked":true},
  {"color":"red", "shape":"circle", "liked":true},
  {"color":"blue", "shape":"hexagon", "liked":false},
  {"color":"red", "shape":"hexagon", "liked":false},
  {"color":"yellow", "shape":"hexagon", "liked":true},
  {"color":"yellow", "shape":"circle", "liked":true}
];

Prepare test dataset

var test_data = [
  {"color":"blue", "shape":"hexagon", "liked":false},
  {"color":"red", "shape":"hexagon", "liked":false},
  {"color":"yellow", "shape":"hexagon", "liked":true},
  {"color":"yellow", "shape":"circle", "liked":true}
];

Setup Target Class used for prediction

var class_name = "liked";

Setup Features to be used by decision tree

var features = ["color", "shape"];

Create decision tree and train the model

var dt = new DecisionTree(class_name, features);
dt.train(training_data);

Alternately, you can also create and train the tree when instantiating the tree itself:

var dt = new DecisionTree(training_data, class_name, features);

Predict class label for an instance

var predicted_class = dt.predict({
  color: "blue",
  shape: "hexagon"
});

Evaluate model on a dataset

var accuracy = dt.evaluate(test_data);

Export underlying model for visualization or inspection

var treeJson = dt.toJSON();

Create a decision tree from a previously trained model

var treeJson = dt.toJSON();
var preTrainedDecisionTree = new DecisionTree(treeJson);

Alternately, you can also import a previously trained model on an existing tree instance, assuming the features & class are the same:

var treeJson = dt.toJSON();
dt.import(treeJson);