diff --git a/CHANGELOG.md b/CHANGELOG.md index 6a9a928..7402100 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ CHANGELOG This changelog references the relevant changes done in PHP-ML library. -* 0.2.0 (in plan/progress) +* 0.1.2 (in plan/progress) * feature [Dataset] - FilesDataset - load dataset from files (folder names as targets) * feature [Metric] - ClassificationReport - report about trained classifier * bug [Feature Extraction] - fix problem with token count vectorizer array order diff --git a/README.md b/README.md index a3f01ce..29394a6 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,7 @@ composer require php-ai/php-ml * Metric * [Accuracy](http://php-ml.readthedocs.io/en/latest/machine-learning/metric/accuracy/) * [Confusion Matrix](http://php-ml.readthedocs.io/en/latest/machine-learning/metric/confusion-matrix/) + * [Classification Report](http://php-ml.readthedocs.io/en/latest/machine-learning/metric/classification-report/) * Workflow * [Pipeline](http://php-ml.readthedocs.io/en/latest/machine-learning/workflow/pipeline) * Cross Validation diff --git a/docs/index.md b/docs/index.md index d58f03e..757f278 100644 --- a/docs/index.md +++ b/docs/index.md @@ -51,6 +51,7 @@ composer require php-ai/php-ml * Metric * [Accuracy](machine-learning/metric/accuracy/) * [Confusion Matrix](machine-learning/metric/confusion-matrix/) + * [Classification Report](machine-learning/metric/classification-report/) * Workflow * [Pipeline](machine-learning/workflow/pipeline) * Cross Validation diff --git a/docs/machine-learning/metric/classification-report.md b/docs/machine-learning/metric/classification-report.md new file mode 100644 index 0000000..53490b2 --- /dev/null +++ b/docs/machine-learning/metric/classification-report.md @@ -0,0 +1,61 @@ +# 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); +``` + +### 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] + +``` diff --git a/mkdocs.yml b/mkdocs.yml index f06a08b..057a1a1 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -15,6 +15,7 @@ pages: - Metric: - Accuracy: machine-learning/metric/accuracy.md - Confusion Matrix: machine-learning/metric/confusion-matrix.md + - Classification Report: machine-learning/metric/classification-report.md - Workflow: - Pipeline: machine-learning/workflow/pipeline.md - Cross Validation: