Algorithm-AM
view release on metacpan or search on metacpan
lib/Algorithm/AM/Batch.pm view on Meta::CPAN
croak 'Training and test sets do not have the same ' .
'cardinality (' . $self->training_set->cardinality .
' and ' . $test_set->cardinality . ')';
}
$self->_set_test_set($test_set);
if($self->begin_hook){
$self->begin_hook->($self);
}
# save the result objects from all items, all iterations, here
my @all_results;
foreach my $item_number (0 .. $test_set->size - 1) {
if($log->is_debug){
$log->debug('Test items left: ' .
$test_set->size + 1 - $item_number);
}
my $test_item = $test_set->get_item($item_number);
# store the results just for this item
my @item_results;
lib/Algorithm/AM/Batch.pm view on Meta::CPAN
given the Batch object instance.
=head2 C<begin_test_hook>
$batch->begin_repeat_hook(sub {
my ($batch, $test_item) = @_;
$batch->probability(.5);
print $test_item->comment . "\n";
});
This hook is called by L</classify_all> before any iterations of
classification start for each test item. It is provided with the Batch
object instance and the test item.
=head2 C<begin_repeat_hook>
$batch->begin_repeat_hook(sub {
my ($batch, $test_item, $iteration) = @_;
$batch->probability(.5);
print $test_item->comment . "\n";
print "I'm on iteration $iteration\n";
lib/Algorithm/AM/Batch.pm view on Meta::CPAN
the Batch object instance, the test item, the iteration number, an
array ref containing training items excluded from the training set, and
the result object returned by L<classify|Algorithm::AM/classify>.
=head2 C<end_test_hook>
$batch->begin_repeat_hook(sub {
my ($batch, $test_item, @results) = @_;
$batch->probability(.5);
print $test_item->comment . "\n";
my $iterations = @results;
my $correct = 0;
for my $result (@result){
$correct++ if $result->result ne 'incorrect';
}
print 'Item ' . $item->comment .
" correct $correct/$iterations times\n";
});
This hook is called by L</classify_all> after all classifications
of a single item are finished. It is provided with the Batch
object instance as well as a list of the
L<Result|Algorithm::AM::Result> objects returned by
L<Algorithm::AM/classify> during each iteration of classification.
=head2 C<end_hook>
t/07-Batch_hooks.t view on Meta::CPAN
}
sub test_end_test_vars {
my ($self, $test_item, @item_results) = @_;
isa_ok($item_results[0], 'Algorithm::AM::Result');
is(scalar @item_results, 2, '1 result for each iteration');
is($item_results[0]->test_item, $item_results[0]->test_item,
'results have the same test item');
}
# Test variables provided after all iterations are finished
sub test_end_vars {
my ($batch, @results) = @_;
is_deeply($results[0]->scores, {e => '4', r => '9'},
'scores for first result');
is_deeply($results[1]->scores, {e => '4', r => '9'},
'scores for second result');
is_deeply($results[2]->scores, {e => '4', r => '4'},
'scores for third result');
is_deeply($results[3]->scores, {e => '4', r => '4'},
( run in 0.441 second using v1.01-cache-2.11-cpan-96521ef73a4 )