AI::NaiveBayes1 - Bayesian prediction of categories


NAME

AI::NaiveBayes1 - Bayesian prediction of categories


SYNOPSIS

  use Algorithm::NaiveBayes1;
  my $nb = Algorithm::NaiveBayes1->new;
  $nb->add_instances(attributes=>{model=>'H',place=>'B'},label=>'repairs=Y',cases=>30);
  $nb->add_instances(attributes=>{model=>'H',place=>'B'},label=>'repairs=N',cases=>10);
  $nb->add_instances(attributes=>{model=>'H',place=>'N'},label=>'repairs=Y',cases=>18);
  $nb->add_instances(attributes=>{model=>'H',place=>'N'},label=>'repairs=N',cases=>16);
  $nb->add_instances(attributes=>{model=>'T',place=>'B'},label=>'repairs=Y',cases=>22);
  $nb->add_instances(attributes=>{model=>'T',place=>'B'},label=>'repairs=N',cases=>14);
  $nb->add_instances(attributes=>{model=>'T',place=>'N'},label=>'repairs=Y',cases=> 6);
  $nb->add_instances(attributes=>{model=>'T',place=>'N'},label=>'repairs=N',cases=>84);
  $nb->train;
  print "Model:\n" . $nb->print_model;

  # Find results for unseen instances
  my $result = $nb->predict
     (attributes => {model=>'T', place=>'N'});
  foreach my $k (keys(%{ $result })) {
      print "for label $k P = " . $result->{$k} . "\n";
  }


DESCRIPTION

This module implements the classic ``Naive Bayes'' machine learning algorithm.


METHODS

new()
Creates a new AI::NaiveBayes1 object and returns it. At the moment there are no parameters that affect anything.

add_instance( attributes => HASH, label => STRING|ARRAY )
Adds a training instance to the categorizer.

train()
Calculates the probabilities that will be necessary for categorization using the predict() method.

predict( attributes => HASH )
Use this method to predict the label of an unknown instance. The attributes should be of the same format as you passed to add_instance(). predict() returns a hash reference whose keys are the names of labels, and whose values are corresponding probabilities.

labels
Returns a list of all the labels the object knows about (in no particular order), or the number of labels if called in a scalar context.


THEORY

Bayes' Theorem is a way of inverting a conditional probability. It states:

                P(y|x) P(x)
      P(x|y) = -------------
                   P(y)

and so on...


HISTORY

Algorithms::NaiveBayes by Ken Williams was not what I needed so I wrote this one. Algorithms::NaiveBayse is oriented towards text categorization, it includes smooting, and log probabilities. This module is a generic, basic Naive Bayes algorithm.


AUTHOR

Copyright 2003 Vlado Keselj www.cs.dal.ca/~vlado

This script is provided ``as is'' without expressed or implied warranty. This is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

The latest version can be found at http://www.cs.dal.ca/~vlado/srcperl/.


SEE ALSO

Algorithms::NaiveBayes, the perl manpage.

 AI::NaiveBayes1 - Bayesian prediction of categories