This package provides an implementation of an algorithm that creates a decision tree.

It provides the following features

  • Classification of multiple classes of instances
  • Handling attributes with continuous values (A bit clunky for the timebeing)
  • Function for selecting attributes can be modified by changing the *attribute-selection-function* variable



To train a decision tree call the function create-classifier function. This function requires a list of training instances.

A training instance can be created by calling the macro define-instance. This macro requires the first argument to be the name of the class to which the instance belongs and the rest are list of attribute values.

The create-classifier returns the root node of the decision tree. This inturn is used by the classify function that classifies new instances.

Continuous values

Before passing a list of continous values to the create-classifier function the continous values need to be removed. As of now this is what the algorithm that I have written does.

  • It sorts the instances based on the values of the attribute in ascending order
  • Then for every instance in the list it check the value of the attribute and the class and identifies ranges where the classes are same
  • It then replaces all the continuous values with symbols that were idenified by the previous step
  • It returns a list of ranges and the corresponding symbols

This is done by the function generate-range-symbols. When trying to classify any new instance the continuous values need to be replaced, this is done by the function replace-continuous-values. This function requires the range list generated by the generate-range-symbols function, the instance and the attribute that is supposed to be continous


  • Addition of rule post pruning
  • A set of newer attribute selection functions
  • Better method to define and use attributes with continous values (requesting suggestions)
    • I want to know if there is a means by which I can define instances with continous values such that when defining new instances the continous values are replaced automatically.

If there are any suggestions/bugs please mail me at reuben dot cornel at gmail dot com. Thank you!!!

Artificial Intelligence