mirror of
https://github.com/Llewellynvdm/php-ml.git
synced 2024-11-15 01:44:05 +00:00
554c86af68
* Fix testcases of ClassificationReport * Fix averaging method in ClassificationReport * Fix divided by zero if labels are empty * Fix calculation of f1score * Add averaging methods (not completed) * Implement weighted average method * Extract counts to properties * Fix default to macro average * Implement micro average method * Fix style * Update docs * Fix styles
1.8 KiB
1.8 KiB
Classification Report
Class for calculate main classifier metrics: precision, recall, F1 score and support.
Report
To generate report you must provide the following parameters:
- $actualLabels - (array) true sample labels
- $predictedLabels - (array) predicted labels (e.x. from test group)
use Phpml\Metric\ClassificationReport;
$actualLabels = ['cat', 'ant', 'bird', 'bird', 'bird'];
$predictedLabels = ['cat', 'cat', 'bird', 'bird', 'ant'];
$report = new ClassificationReport($actualLabels, $predictedLabels);
Optionally you can provide the following parameter:
- $average - (int) averaging method for multi-class classification
ClassificationReport::MICRO_AVERAGE
= 1ClassificationReport::MACRO_AVERAGE
= 2 (default)ClassificationReport::WEIGHTED_AVERAGE
= 3
Metrics
After creating the report you can draw its individual metrics:
- precision (
getPrecision()
) - fraction of retrieved instances that are relevant - recall (
getRecall()
) - fraction of relevant instances that are retrieved - F1 score (
getF1score()
) - measure of a test's accuracy - support (
getSupport()
) - count of testes samples
$precision = $report->getPrecision();
// $precision = ['cat' => 0.5, 'ant' => 0.0, 'bird' => 1.0];
Example
use Phpml\Metric\ClassificationReport;
$actualLabels = ['cat', 'ant', 'bird', 'bird', 'bird'];
$predictedLabels = ['cat', 'cat', 'bird', 'bird', 'ant'];
$report = new ClassificationReport($actualLabels, $predictedLabels);
$report->getPrecision();
// ['cat' => 0.5, 'ant' => 0.0, 'bird' => 1.0]
$report->getRecall();
// ['cat' => 1.0, 'ant' => 0.0, 'bird' => 0.67]
$report->getF1score();
// ['cat' => 0.67, 'ant' => 0.0, 'bird' => 0.80]
$report->getSupport();
// ['cat' => 1, 'ant' => 1, 'bird' => 3]
$report->getAverage();
// ['precision' => 0.75, 'recall' => 0.83, 'f1score' => 0.73]