AI::ConfusionMatrix - make a confusion matrix
my %matrix; # Loop over your predictions # [...] $matrix{$expected}{$predicted} += 1; # [...] makeConfusionMatrix(\%matrix, 'output.csv');
This module prints a confusion matrix from a hash reference. This module tries to be generic enough to be used within a lot of machine learning projects.
makeConfusionMatrix($hash_ref, $file [, $delimiter ])
This function makes a confusion matrix from $hash_ref and writes it to $file. $file can be a filename or a file handle opened with the w+ mode. If $delimiter is present, it is used as a custom separator for the fields in the confusion matrix.
$hash_ref
$file
w+
$delimiter
Examples:
makeConfusionMatrix(\%matrix, 'output.csv'); makeConfusionMatrix(\%matrix, 'output.csv', ';'); makeConfusionMatrix(\%matrix, *$fh);
The hash reference must look like this :
$VAR1 = { 'value_expected1' => { 'value_predicted1' => number_of_predictions }, 'value_expected2' => { 'value_predicted1' => number_of_predictions, 'value_predicted2' => number_of_predictions }, 'value_expected3' => { 'value_predicted3' => number_of_predictions } };
The output will be in CSV. Here is an example:
,1974,1978,2002,2003,2005,TOTAL,TP,FP,FN,SENS,ACC 1974,3,1,,,2,6,3,4,3,42.86%,50.00% 1978,1,5,,,,6,5,4,1,55.56%,83.33% 2002,2,2,8,,,12,8,1,4,88.89%,66.67% 2003,1,,,7,2,10,7,0,3,100.00%,70.00% 2005,,1,1,,6,8,6,4,2,60.00%,75.00% TOTAL,7,9,9,7,10,42,29,13,13,69.05%,69.05%
Prettified:
| | 1974 | 1978 | 2002 | 2003 | 2005 | TOTAL | TP | FP | FN | SENS | ACC | |-------|------|------|------|------|------|-------|----|----|----|---------|--------| | 1974 | 3 | 1 | | | 2 | 6 | 3 | 4 | 3 | 42.86% | 50.00% | | 1978 | 1 | 5 | | | | 6 | 5 | 4 | 1 | 55.56% | 83.33% | | 2002 | 2 | 2 | 8 | | | 12 | 8 | 1 | 4 | 88.89% | 66.67% | | 2003 | 1 | | | 7 | 2 | 10 | 7 | 0 | 3 | 100.00% | 70.00% | | 2005 | | 1 | 1 | | 6 | 8 | 6 | 4 | 2 | 60.00% | 75.00% | | TOTAL | 7 | 9 | 9 | 7 | 10 | 42 | 29 | 13 | 13 | 69.05% | 69.05% |
True Positive
False Positive
False Negative
Sensitivity. Number of true positives divided by the number of positives.
Accuracy
getConfusionMatrix($hash_ref)
Get the data used to compute the table above.
Example:
my %cm = getConfusionMatrix(\%matrix);
Vincent Lequertier <vi.le@autistici.org>
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install AI::ConfusionMatrix, copy and paste the appropriate command in to your terminal.
cpanm
cpanm AI::ConfusionMatrix
CPAN shell
perl -MCPAN -e shell install AI::ConfusionMatrix
For more information on module installation, please visit the detailed CPAN module installation guide.