0.5, 'ant' => 0.0, 'bird' => 1.0, ]; $recall = [ 'cat' => 1.0, 'ant' => 0.0, 'bird' => 0.67, ]; $f1score = [ 'cat' => 0.67, 'ant' => 0.0, 'bird' => 0.80, ]; $support = [ 'cat' => 1, 'ant' => 1, 'bird' => 3, ]; $average = [ 'precision' => 0.75, 'recall' => 0.83, 'f1score' => 0.73, ]; $this->assertEquals($precision, $report->getPrecision(), '', 0.01); $this->assertEquals($recall, $report->getRecall(), '', 0.01); $this->assertEquals($f1score, $report->getF1score(), '', 0.01); $this->assertEquals($support, $report->getSupport(), '', 0.01); $this->assertEquals($average, $report->getAverage(), '', 0.01); } public function testClassificationReportGenerateWithNumericLabels(): void { $labels = [0, 1, 2, 2, 2]; $predicted = [0, 0, 2, 2, 1]; $report = new ClassificationReport($labels, $predicted); $precision = [ 0 => 0.5, 1 => 0.0, 2 => 1.0, ]; $recall = [ 0 => 1.0, 1 => 0.0, 2 => 0.67, ]; $f1score = [ 0 => 0.67, 1 => 0.0, 2 => 0.80, ]; $support = [ 0 => 1, 1 => 1, 2 => 3, ]; $average = [ 'precision' => 0.75, 'recall' => 0.83, 'f1score' => 0.73, ]; $this->assertEquals($precision, $report->getPrecision(), '', 0.01); $this->assertEquals($recall, $report->getRecall(), '', 0.01); $this->assertEquals($f1score, $report->getF1score(), '', 0.01); $this->assertEquals($support, $report->getSupport(), '', 0.01); $this->assertEquals($average, $report->getAverage(), '', 0.01); } public function testPreventDivideByZeroWhenTruePositiveAndFalsePositiveSumEqualsZero(): void { $labels = [1, 2]; $predicted = [2, 2]; $report = new ClassificationReport($labels, $predicted); $this->assertEquals([ 1 => 0.0, 2 => 0.5, ], $report->getPrecision(), '', 0.01); } public function testPreventDivideByZeroWhenTruePositiveAndFalseNegativeSumEqualsZero(): void { $labels = [2, 2, 1]; $predicted = [2, 2, 3]; $report = new ClassificationReport($labels, $predicted); $this->assertEquals([ 1 => 0.0, 2 => 1, 3 => 0, ], $report->getPrecision(), '', 0.01); } public function testPreventDividedByZeroWhenPredictedLabelsAllNotMatch(): void { $labels = [1, 2, 3, 4, 5]; $predicted = [2, 3, 4, 5, 6]; $report = new ClassificationReport($labels, $predicted); $this->assertEquals([ 'precision' => 0, 'recall' => 0, 'f1score' => 0, ], $report->getAverage(), '', 0.01); } }