Class: Ai4r::Classifiers::Classifier

Inherits:
Object
  • Object
show all
Includes:
Data::Parameterizable
Defined in:
lib/ai4r/classifiers/classifier.rb

Overview

This class defines a common API for classifiers. All methods in this class must be implemented in subclasses.

Instance Method Summary collapse

Methods included from Data::Parameterizable

#get_parameters, included, #set_parameters

Instance Method Details

#build(data_set) ⇒ Object

Build a new classifier, using data examples found in data_set. The last attribute of each item is considered as the item class.

Raises:

  • (NotImplementedError)

24
25
26
# File 'lib/ai4r/classifiers/classifier.rb', line 24

def build(data_set)
  raise NotImplementedError
end

#eval(data) ⇒ Object

You can evaluate new data, predicting its class. e.g.

classifier.eval(['New York',  '<30', 'F'])  # => 'Y'

Raises:

  • (NotImplementedError)

31
32
33
# File 'lib/ai4r/classifiers/classifier.rb', line 31

def eval(data)
  raise NotImplementedError
end

#get_rulesObject

This method returns the generated rules in ruby code. e.g.

classifier.get_rules
  # =>  if age_range=='<30' then marketing_target='Y'
        elsif age_range=='[30-50)' and city=='Chicago' then marketing_target='Y'
        elsif age_range=='[30-50)' and city=='New York' then marketing_target='N'
        elsif age_range=='[50-80]' then marketing_target='N'
        elsif age_range=='>80' then marketing_target='Y'
        else raise 'There was not enough information during training to do a proper induction for this data element' end

It is a nice way to inspect induction results, and also to execute them:

age_range = '<30'
city='New York'
marketing_target = nil
eval classifier.get_rules   
puts marketing_target
  # =>  'Y'

Note, however, that not all classifiers are able to produce rules. This method is not implemented in such classifiers.

Raises:

  • (NotImplementedError)

56
57
58
# File 'lib/ai4r/classifiers/classifier.rb', line 56

def get_rules
  raise NotImplementedError
end