Wiki
Download
Manual
Eggs
API
Tests
Bugs
show
edit
history
You can edit this page using
wiki syntax
for markup.
Article contents:
== Outdated egg! This is an egg for CHICKEN 4, the unsupported old release. You're almost certainly looking for [[/eggref/5/classifiers|the CHICKEN 5 version of this egg]], if it exists. If it does not exist, there may be equivalent functionality provided by another egg; have a look at the [[https://wiki.call-cc.org/chicken-projects/egg-index-5.html|egg index]]. Otherwise, please consider porting this egg to the current version of CHICKEN. == Classifiers Some algorithms to develop [[http://en.wikipedia.org/wiki/Statistical_classification|classification]] models of data. This library uses [[dataset-utils]]; another classification algorithm is provided in [[libsvm]]. === Exported Procedures The classifiers are constructed using a {{(build-X training-data target-class)}} procedure. Training data are a relation, as defined in [[dataset-utils]], and {{target-class}} is the name of the attribute to be used for the target classification. ==== Generic procedures <procedure>(classify-instance classifier instance)</procedure> Given a classifier and a data instance, returns a classification. <procedure>(to-string classifier)</procedure> Given a classifier, returns a string representation of the classifier model. ==== ZeroR A simple rule: always predicts the majority class of the training data. <procedure>(build-zero-r training-data target-class) </procedure> Constructs an instance of a ZeroR classifier. Training data are a relation, as defined in [[dataset-utils]], and {{target-class}} is the name of the attribute to be used for the target classification. ==== OneR Finds the attribute which best predicts the training data. <procedure>(build-one-r training-data target-class)</procedure> Constructs an instance of a OneR classifier. Training data are a relation, as defined in [[dataset-utils]], and {{target-class}} is the name of the attribute to be used for the target classification. ==== ID3 <procedure>(build-id3 training-data target-class)</procedure> Constructs an instance of a decision-tree classifier using the ID3 algorithm. Training data are a relation, as defined in [[dataset-utils]], and {{target-class}} is the name of the attribute to be used for the target classification. All attributes must be nominal. ==== Instance-based <procedure>(build-one-nn training-data target-class #!key metric)</procedure> Constructs a simple instance-based classifier, which returns the class of nearest neighbour for any test instance. Training data are a relation, as defined in [[dataset-utils]], and {{target-class}} is the name of the attribute to be used for the target classification. {{metric}} is a function taking two instance definitions and returning a real number reflecting the distance between the instances; see [[dataset-utils]] for some standard metrics. {{metric}} defaults to {{euclidean-distance}}. === Example #;1> (use dataset-utils) #;2> (use classifiers) #;3> (use format) #;4> (define weather (make-relation 'plays-tennis (list (make-nominal-attribute 'outlook 'sunny 'overcast 'rainy) (make-nominal-attribute 'temperature 'hot 'mild 'cool) (make-nominal-attribute 'humidity 'high 'normal) (make-nominal-attribute 'windy 'true 'false) (make-nominal-attribute 'play 'yes 'no)) '((sunny hot high false no) (sunny hot high true no) (overcast hot high false yes) (rainy mild high false yes) (rainy cool normal false yes) (rainy cool normal true no) (overcast cool normal true yes) (sunny mild high false no) (sunny cool normal false yes) (rainy mild normal false yes) (sunny mild normal true yes) (overcast mild high true yes) (overcast hot normal false yes) (rainy mild high true no)))) #;5> (define one-r (build-one-r weather 'play)) #;6> (format #t "~a~&" (to-string one-r)) OneR: uses attribute outlook : sunny => no : rainy => yes : overcast => yes #t #;7> (define id3 (build-id3 weather 'play)) #;8> (format #t "~a~&" (to-string id3)) ID3 Node: outlook value rainy Node: windy value false Leaf: yes value true Leaf: no value overcast Leaf: yes value sunny Node: humidity value normal Leaf: yes value high Leaf: no #;9> (for-each (lambda (item) (format #t "~a Prediction is: ~a~&" item (classify-instance id3 item))) (relation-data weather)) (sunny hot high false no) Prediction is: no (sunny hot high true no) Prediction is: no (overcast hot high false yes) Prediction is: yes (rainy mild high false yes) Prediction is: yes (rainy cool normal false yes) Prediction is: yes (rainy cool normal true no) Prediction is: no (overcast cool normal true yes) Prediction is: yes (sunny mild high false no) Prediction is: no (sunny cool normal false yes) Prediction is: yes (rainy mild normal false yes) Prediction is: yes (sunny mild normal true yes) Prediction is: yes (overcast mild high true yes) Prediction is: yes (overcast hot normal false yes) Prediction is: yes (rainy mild high true no) Prediction is: no === Author [[/users/peter-lane|Peter Lane]]. === License GPL version 3.0. === Requirements Works with [[dataset-utils]]. === Version History in trunk.
Description of your changes:
I would like to authenticate
Authentication
Username:
Password:
Spam control
What do you get when you multiply 7 by 6?