php-ml/docs/machine-learning/metric/classification-report.md
Yuji Uchiyama 554c86af68 Choose averaging method in classification report (#205)
* 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
2018-01-29 18:06:21 +01:00

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 = 1
    • ClassificationReport::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]