countSamplesByTarget($split->getTestLabels(), 'a')); self::assertEquals(2, $this->countSamplesByTarget($split->getTestLabels(), 'b')); $split = new StratifiedRandomSplit($dataset, 0.25); self::assertEquals(1, $this->countSamplesByTarget($split->getTestLabels(), 'a')); self::assertEquals(1, $this->countSamplesByTarget($split->getTestLabels(), 'b')); } public function testDatasetStratifiedRandomSplitWithEvenDistributionAndNumericTargets(): void { $dataset = new ArrayDataset( $samples = [[1], [2], [3], [4], [5], [6], [7], [8]], $labels = [1, 2, 1, 2, 1, 2, 1, 2] ); $split = new StratifiedRandomSplit($dataset, 0.5); self::assertEquals(2, $this->countSamplesByTarget($split->getTestLabels(), 1)); self::assertEquals(2, $this->countSamplesByTarget($split->getTestLabels(), 2)); $split = new StratifiedRandomSplit($dataset, 0.25); self::assertEquals(1, $this->countSamplesByTarget($split->getTestLabels(), 1)); self::assertEquals(1, $this->countSamplesByTarget($split->getTestLabels(), 2)); } /** * @param string|int $countTarget */ private function countSamplesByTarget(array $splitTargets, $countTarget): int { $count = 0; foreach ($splitTargets as $target) { if ($target === $countTarget) { ++$count; } } return $count; } }