Data-Mining-Apriori
view release on metacpan or search on metacpan
lib/Data/Mining/Apriori.pm view on Meta::CPAN
next unless $self->{keyItemsTransactions}{"@implication"};
my$supportConsequent=($self->{keyItemsTransactions}{"@implication"}/$self->{totalTransactions});
my $support = $supportConsequent;
next if($support < $self->{metrics}{minSupport});
my $confidence = ($supportConsequent/$supportAntecedent);
next if(defined $self->{metrics}{minConfidence} && $confidence < $self->{metrics}{minConfidence});
my $lift = ($support/($supportAntecedent*$supportConsequent));
next if(defined $self->{metrics}{minLift} && $lift < $self->{metrics}{minLift});
my $leverage = ($support-($supportAntecedent*$supportConsequent));
next if(defined $self->{metrics}{minLeverage} && $leverage < $self->{metrics}{minLeverage});
my $conviction = ((1-$supportConsequent)==0)?"NaN":((1-$confidence)==0)?"NaN":((1-$supportConsequent)/(1-$confidence));
next if(defined $self->{metrics}{minConviction} && $conviction < $self->{metrics}{minConviction});
my $coverage = $supportAntecedent;
next if(defined $self->{metrics}{minCoverage} && $coverage < $self->{metrics}{minCoverage});
my $correlation = (($support-($supportAntecedent*$supportConsequent))/sqrt($supportAntecedent*(1-$supportAntecedent)*$supportConsequent*(1-$supportConsequent)));
next if(defined $self->{metrics}{minCorrelation} && $correlation < $self->{metrics}{minCorrelation});
my $cosine = ($support/sqrt($supportAntecedent*$supportConsequent));
next if(defined $self->{metrics}{minCosine} && $cosine < $self->{metrics}{minCosine});
my $laplace = (($support+1)/($supportAntecedent+2));
next if(defined $self->{metrics}{minLaplace} && $laplace < $self->{metrics}{minLaplace});
my $jaccard = ($support/($supportAntecedent+$supportConsequent-$support));
next if(defined $self->{metrics}{minJaccard} && $jaccard < $self->{metrics}{minJaccard});
$self->{rule}++;
$support = sprintf("%.$self->{precision}f", $support);
$confidence = sprintf("%.$self->{precision}f", $confidence);
$lift = sprintf("%.$self->{precision}f", $lift);
$leverage = sprintf("%.$self->{precision}f", $leverage);
$conviction = sprintf("%.$self->{precision}f", $conviction)if($conviction ne "NaN");
$coverage = sprintf("%.$self->{precision}f", $coverage);
$correlation = sprintf("%.$self->{precision}f", $correlation);
$cosine = sprintf("%.$self->{precision}f", $cosine);
$laplace = sprintf("%.$self->{precision}f", $laplace);
$jaccard = sprintf("%.$self->{precision}f", $jaccard);
$self->{associationRules}{$self->{rule}} = {
implication => "{ @antecedent } => { @consequent }",
support => $support,
confidence => $confidence,
lift => $lift,
( run in 0.224 second using v1.01-cache-2.11-cpan-4d50c553e7e )