public function testAccuracy() { // Arrange $actual = [true, true, false, false, true]; $predicted = [true, false, true, false, false]; $testSet = [null, null, null, null, null]; $results = new RunnerResults($predicted, $actual, $testSet); // Act $accuracy = $results->getAccuracy(); // Assert $this->assertEquals(2.0 / 5.0, $accuracy); }
public function run(array $dataSet, array $dataSetLabels) { // Generate folds $partitioner = new CrossValidationRandomPartitioner(new DataSet($dataSet, $dataSetLabels), $this->numberOfPartitions); $resultsList = []; for ($i = 0; $i < $this->numberOfPartitions; $i++) { // For each fold, train and classify $currentPartition = $partitioner->getPartition($i); $currentTest = $currentPartition->getTestData(); $currentTraining = $currentPartition->getTrainingData(); $classifier = new $this->classifierClassName($currentTraining->getData(), $currentTraining->getLabels()); $predicted = $this->classify($classifier, $currentTest->getData()); $resultsList[] = new RunnerResults($predicted, $currentTest->getLabels(), $currentTest->getData()); } return RunnerResults::combine($resultsList); }
public function format(RunnerResults $results) { return sprintf(self::$format, count($results->getTestSet()), $results->getFalsePositives(), $results->getFalseNegatives(), $results->getPrecision(), $results->getRecall(), $results->getSpecificity(), $results->getAccuracy(), $results->getFMeasure()); }