AI-NaiveBayes
view release on metacpan or search on metacpan
lib/AI/NaiveBayes/Learner.pm view on Meta::CPAN
}
if ($self->limit_features) {
my %old = %{$model->{probs}{$label}};
my @features = sort { abs($old{$a}) <=> abs($old{$b}) } keys(%old);
my $limit = min($self->features_kept, 0+@features);
if ($limit < 1) {
$limit = int($limit * keys(%old));
}
my @top = @features[0..$limit-1];
my %kept = map { $_ => $old{$_} } @top;
$model->{probs}{$label} = \%kept;
}
}
my $classifier_class = $self->classifier_class;
return $classifier_class->new( model => $model );
}
sub add_hash {
my ($first, $second) = @_;
$first //= {};
t/01-learner.t view on Meta::CPAN
$learner->add_example( attributes => _hash(qw(one two three four)),
labels => ['farming'] );
$learner->add_example( attributes => _hash(qw(five six seven eight)),
labels => ['farming'] );
$learner->add_example( attributes => _hash(qw(one two three four)),
labels => ['farming'] );
$model = $learner->classifier->model;
is keys %{$model->{probs}{farming}}, 4, 'half features kept';
is join(" ", sort { $a cmp $b } keys %{$model->{probs}{farming}}), 'four one three two';
sub _hash { +{ map {$_,1} @_ } }
t/02-predict.t view on Meta::CPAN
$classifier = $lr->classifier;
# Predict
$s = $classifier->classify( _hash(qw(jakis tekst po polsku)) );
$h = $s->label_sums;
ok(abs( 3 - $h->{farming} / $h->{vampire} ) < 0.01, 'Prior probabillities' );
################################################################
sub _hash { +{ map {$_,1} @_ } }
t/default_training.t view on Meta::CPAN
{
attributes => _hash(qw(vampires cannot see their images mirrors)),
labels => ['vampire']
},
);
isa_ok( $classifier, 'AI::NaiveBayes' );
################################################################
sub _hash { +{ map {$_,1} @_ } }
( run in 0.388 second using v1.01-cache-2.11-cpan-49f99fa48dc )