AI-Calibrate
view release on metacpan or search on metacpan
t/AI-Calibrate-NB.t view on Meta::CPAN
# -*- Mode: CPerl -*-
use English;
use strict;
# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl AI-Calibrate.t'
use Test::More;
eval("use AI::NaiveBayes1");
if ($EVAL_ERROR) {
plan skip_all => 'AI::NaiveBayes1 does not seem to be present';
} else {
plan tests => 2;
}
use_ok('AI::Calibrate', ':all');
my @instances =
( [ { outlook=>'sunny',temperature=>85,humidity=>85,windy=>'FALSE'},
'no'],
[ {outlook=>'sunny',temperature=>80,humidity=>90,windy=>'TRUE'},
'no'],
[ {outlook=>'overcast',temperature=>83,humidity=>86,windy=>'FALSE'},
'yes'],
[ {outlook=>'rainy',temperature=>70,humidity=>96,windy=>'FALSE'},
'yes'],
[ {outlook=>'rainy',temperature=>68,humidity=>80,windy=>'FALSE'},
'yes'],
[ {outlook=>'rainy',temperature=>65,humidity=>70,windy=>'TRUE'},
'no'],
[ {outlook=>'overcast',temperature=>64,humidity=>65,windy=>'TRUE'},
'yes'],
[ {outlook=>'sunny',temperature=>72,humidity=>95,windy=>'FALSE'},
'no'],
[ {outlook=>'sunny',temperature=>69,humidity=>70,windy=>'FALSE'},
'yes'],
[ {outlook=>'rainy',temperature=>75,humidity=>80,windy=>'FALSE'},
'yes'],
[ {outlook=>'sunny',temperature=>75,humidity=>70,windy=>'TRUE'},
'yes'],
[ {outlook=>'overcast',temperature=>72,humidity=>90,windy=>'TRUE'},
'yes'],
[ {outlook=>'overcast',temperature=>81,humidity=>75,windy=>'FALSE'},
'yes'],
[ {outlook=>'rainy',temperature=>71,humidity=>91,windy=>'TRUE'},
'no']
);
my $nb = AI::NaiveBayes1->new;
$nb->set_real('temperature', 'humidity');
for my $inst (@instances) {
my($attrs, $play) = @$inst;
$nb->add_instance(attributes=>$attrs, label=>"play=$play");
}
$nb->train;
my @points;
for my $inst (@instances) {
my($attrs, $play) = @$inst;
my $ph = $nb->predict(attributes=>$attrs);
my $play_score = $ph->{"play=yes"};
push(@points, [$play_score, ($play eq "yes" ? 1 : 0)]);
}
( run in 1.206 second using v1.01-cache-2.11-cpan-39bf76dae61 )