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
Repository: https://github.com/reubencornel/cl-decisiontree
Usage
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
Todo
- 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