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
69 lines
1.8 KiB
Markdown
69 lines
1.8 KiB
Markdown
# 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]
|
|
|
|
```
|