AI-DecisionTree
view release on metacpan or search on metacpan
Instance/t/01-basic.t view on Meta::CPAN
#!/usr/bin/perl
use Test;
BEGIN { plan tests => 7 }
use AI::DecisionTree::Instance;
ok(1);
my $i = AI::DecisionTree::Instance->new([1, 2], 0, "foo");
ok $i->value_int(0), 1;
ok $i->value_int(1), 2;
ok $i->result_int, 0;
Instance/t/02-leaktest.t view on Meta::CPAN
#!/usr/bin/perl
use Test;
BEGIN { plan tests => 4 }
use AI::DecisionTree::Instance;
ok(1);
my $x = 0;
{
local *{"AI::DecisionTree::Instance::DESTROY"} = sub { $x = 1 };
{
my $i = new AI::DecisionTree::Instance([3,4], 4, "foo");
---
abstract: 'Automatically Learns Decision Trees'
author:
- 'Ken Williams <kwilliams@cpan.org>'
build_requires:
English: 0
Test: 0
Test::More: 0
warnings: 0
configure_requires:
ExtUtils::MakeMaker: 6.30
dynamic_config: 0
generated_by: 'Dist::Zilla version 4.300009, CPAN::Meta::Converter version 2.120351'
license: perl
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
version: 1.4
name: AI-DecisionTree
Makefile.PL view on Meta::CPAN
use ExtUtils::MakeMaker 6.30;
my %WriteMakefileArgs = (
"ABSTRACT" => "Automatically Learns Decision Trees",
"AUTHOR" => "Ken Williams <kwilliams\@cpan.org>",
"BUILD_REQUIRES" => {
"English" => 0,
"Test" => 0,
"Test::More" => 0,
"warnings" => 0
},
"CONFIGURE_REQUIRES" => {
"ExtUtils::MakeMaker" => "6.30"
},
"DISTNAME" => "AI-DecisionTree",
"EXE_FILES" => [],
"LICENSE" => "perl",
"NAME" => "AI::DecisionTree",
"PREREQ_PM" => {
match = ~$
match = ^spam
match = ^AI-DecisionTree
[Signature]
[Bugtracker]
[Repository]
;[ModuleBuild]
[InstallGuide]
[Test::Perl::Critic]
;[PodCoverageTests]
[AutoPrereqs]
skip = ^AI::DecisionTree
[Git::Tag]
t/01-simple.t view on Meta::CPAN
# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl test.pl'
#########################
use Test;
BEGIN { plan tests => 31 };
use AI::DecisionTree;
ok(1); # If we made it this far, we're ok.
#########################
my @attributes = qw(outlook temperature humidity wind play_tennis);
my @cases = qw(
sunny hot high weak no
sunny hot high strong no
t/01-simple.t view on Meta::CPAN
outlook => 'rain',
temperature => 'mild',
humidity => 'high',
wind => 'strong',
}
);
ok $result, 'no';
ok $confidence, 1;
{
# Test attribute callbacks
my %attributes = (
outlook => 'rain',
temperature => 'mild',
humidity => 'high',
wind => 'strong',
);
my $result = $dtree->get_result( callback => sub { $attributes{$_[0]} } );
ok $result, 'no';
}
t/01-simple.t view on Meta::CPAN
system('open', $file);
}
} else {
skip("Skipping: GraphViz is not installed", 0);
}
# Make sure there are 8 nodes
ok $dtree->nodes, 8;
{
# Test max_depth
$dtree->train(max_depth => 1);
my @rules = $dtree->rule_statements;
ok @rules, 3;
ok $dtree->depth, 1;
}
{
# Should barf on inconsistent data
my $t2 = new AI::DecisionTree;
$t2->add_instance( attributes => { foo => 'bar' },
t/02-noisy.t view on Meta::CPAN
# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl test.pl'
#########################
use Test;
BEGIN { plan tests => 5 };
use AI::DecisionTree;
ok(1); # If we made it this far, we're ok.
#########################
my $dtree = AI::DecisionTree->new(noise_mode => 'pick_best');
ok $dtree;
my @names = split /, /, <DATA>;
t/02-noisy.t view on Meta::CPAN
my %pairs = map {$names[$_], $values[$_]} 0..$#names;
$dtree->add_instance(attributes => \%pairs,
result => $result,
);
}
print "Building decision tree\n";
$dtree->train;
ok(1);
# Test on rest of data, get at least 80%
print "Testing on remainder of data\n";
my ($good, $bad) = (0,0);
while (<DATA>) {
chomp;
my @values = split /, /, $_;
my $result = pop @values;
my %pairs = map {$names[$_], $values[$_]} 0..$#names;
my ($guess, $confidence) = $dtree->get_result(attributes => \%pairs);
$guess ||= ''; $confidence ||= '';
($guess eq $result ? $good : $bad)++;
t/author-critic.t view on Meta::CPAN
#!perl
BEGIN {
unless ($ENV{AUTHOR_TESTING}) {
require Test::More;
Test::More::plan(skip_all => 'these tests are for testing by the author');
}
}
use strict;
use warnings;
use Test::More;
use English qw(-no_match_vars);
eval "use Test::Perl::Critic";
plan skip_all => 'Test::Perl::Critic required to criticise code' if $@;
Test::Perl::Critic->import( -profile => "perlcritic.rc" ) if -e "perlcritic.rc";
all_critic_ok();
( run in 0.613 second using v1.01-cache-2.11-cpan-4d50c553e7e )