AI-MaxEntropy

 view release on metacpan or  search on metacpan

lib/AI/MaxEntropy/Util.pm  view on Meta::CPAN

8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
our $VERSION = '0.20';
 
our @ISA = qw/Exporter/;
 
our @EXPORT_OK =
    qw/traverse_partially map_partially train_and_test precision recall/;
 
our %EXPORT_TAGS =
    (all => [@EXPORT_OK]);
 
sub traverse_partially(&$$;$) {
    my ($code, $samples, $pattern, $t) = @_;
    $t ||= 'x';
    my ($p, $n) = (length($pattern), scalar(@$samples));
    for my $i (grep { substr($pattern, $_, 1) eq $t } (0 .. $p - 1)) {
        for (int($n * $i / $p) .. int($n * ($i + 1) / $p) - 1) {
            $_ = $samples->[$_];
            $code->();
        }
    }
}
 
sub map_partially(&$$;$) {
    my ($code, $samples, $pattern, $t) = @_;
    my @r;
    traverse_partially { push @r, $code->($_) } $samples, $pattern, $t;
    return \@r;
}
 
sub train_and_test {
    my ($me, $samples, $pattern) = @_;
    traverse_partially { $me->see(@$_) } $samples, $pattern, 'x';
    my $m = $me->learn;



( run in 1.404 second using v1.01-cache-2.11-cpan-26ccb49234f )