#!/usr/local/bin/perl5 # The above line is modified by ./Makefile to match the system's # installed location for Perl. $usage = <) { if (($actual_class, $predicted) = $line =~ /^\S+\s+(\S+)\s+(.*)/) { for $pred (split(/\s+/, $predicted)) { if (($predicted_class, $confidence) = $pred =~ /([^:]+):(.*)/) { if ($predicted_class eq $class) { push(@predictions, [ $confidence, $predicted_class, $actual_class ]); last; } } } } } print STDERR "Sorting...\n"; @predictions = sort { $b->[0] <=> $a->[0] } @predictions; if ($bins) { $at_interval = $interval; $example_count = @predictions; for $prediction (@predictions) { ++$predicted_count; ++$bin_count; ++$correct_count if $prediction->[2] eq $class; $cov_percent = 100 * $predicted_count / $example_count; if ($cov_percent >= $at_interval) { $acc_percent = 100 * $correct_count / $bin_count; $at_interval += $interval; printf("%6.2f %8.2f (%3d correct of %3d predicted, %7f confidence)\n", $cov_percent, $acc_percent, $correct_count, $bin_count, $prediction->[0]); $bin_count = 0; $correct_count = 0; } } # $acc_percent = 100 * $correct_count / $bin_count; # printf("%6.2f %8.2f (%3d correct of %3d predicted, %7f confidence)\n", $cov_percent, $acc_percent, $correct_count, $predicted_count, $prediction->[0]); } else { $at_interval = $interval; print STDERR "Coverage Accuracy\n"; for $prediction (@predictions) { ++$seen_count if $prediction->[2] eq $class; } for $prediction (@predictions) { ++$predicted_count; ++$correct_count if $prediction->[2] eq $class; $cov_percent = 100 * $correct_count / $seen_count; if ($cov_percent >= $at_interval) { $acc_percent = 100 * $correct_count / $predicted_count; $at_interval += $interval; printf("%6.2f %8.2f (%3d correct of %3d predicted, %7f confidence)\n", $cov_percent, $acc_percent, $correct_count, $predicted_count, $prediction->[0]); # print $cov_percent, ' ', $acc_percent, "\n"; $correct_count = $predicted_count = 0 if $bins; } # print $seen_count, ' ', $predicted_count, ' ', $correct_count, "\n"; } $acc_percent = 100 * $correct_count / $predicted_count; printf("%6.2f %8.2f (%3d correct of %3d predicted, %7f confidence)\n", $cov_percent, $acc_percent, $correct_count, $predicted_count, $prediction->[0]); } sub usage_msg { print STDERR $usage; exit 1; }