Library
Module
Module type
Parameter
Class
Class type
Constructs a module Oc45.S
with the given comparable type as a continuous data value.
Eg., to obtain a module Oc45.S
working on floats, you can define module FloatOc45 = Oc45.Make(sig type t=float let compare = compare end)
.
module X : Comparable
exception BadContinuity of feature
Raised when appending a data vector with a continuous feature instead of a discrete one, or the other way.
exception DiscreteFeatOutOfBounds of feature * int
DiscreteFeatureOutOfBounds feat class
is raised when trying to classify a data vector with its discrete feature feat
equal to class
when the tree was created assuming that the values for this feature would remain < class
. This usually means that the value is very rare and was not encountered in the training set, thus the limit inferred for the maximal value of this feature is not high enough. You then have to set it manually, using setFeatureMax
.
A value of a feature field.
type data = dataVal array
A feature/data value association table.
type trainVal = {
data : data;
Associates each feature id to its value. If the feature is continuous, it may take any value; if the feature is discrete, it must be an integer in a range 0..N inclusive for a bound N inferred as the maximum of the given data. You can also set this bound manually with setFeatureMax
.
category : category;
The category to which this data vector belongs.
*)}
A value used to train the algorithm.
Generated by emptyTrainSet
, represents a training set for the algorithm.
Output of c45
.
val c45 : trainSet -> decisionTree
Generates a decision tree from a training set.
val classify : decisionTree -> data -> category
Classifies a data vector, given a decision tree.
val emptyTrainSet : int -> int -> bool array -> trainSet
emptyTrainSet nbFeatures nbCategories featContinuity
creates an empty train set with nbFeatures
features and nbCategories
categories. The array featContinuity
must have nbFeatures
elements, with a true
value if the corresponding feature is continuous (that is, may take any value) or false
if the feature is discrete in a restrained set (eg., "Yes"/"No").
Raises InvalidArgument
if featContinuity
has not a length of nbFeatures
Adds a list of data vectors to the given training set.
val setFeatureMax : int -> int -> trainSet -> unit
setFeatureMax feat maxVal trainSet
sets the maximum value the discrete feature feat
may take. A discrete value is represented by an integer between 0 and maxVal
(inclusive).
In most cases, you won't have to call this function and the bound will be automatically set to the maximum value you gave, but you can still set it in case you need to have more values that are not represented.
val getNbFeatures : trainSet -> int
Returns the number of features.
val getFeatureMax : trainSet -> int array
Returns the feature bound array, see setFeatureMax
.
val getFeatContinuity : trainSet -> bool array
Returns the feature continuity array, see emptyTrainSet
.
val getNbCategories : trainSet -> int
Returns the number of categories.
val getSetSize : trainSet -> int
Returns the number of training cases in a given training set.
val toDot :
Format.formatter ->
(Format.formatter -> contData -> unit) ->
decisionTree ->
unit
Pretty-prints the given decision tree as a Dot file in the given formatter, using the second argument as a pretty-printer for the contData
type (ie., the type of a continuous data).
val toDotStdout :
(Format.formatter -> contData -> unit) ->
decisionTree ->
unit
Same as toDot
, but prints directly to stdout
.