1 <?php 2 3 declare(strict_types=1); 4 5 namespace Phpml\CrossValidation; 6 7 use Phpml\Dataset\Dataset; 8 9 class RandomSplit extends Split 10 { 11 protected function splitDataset(Dataset $dataset, float $testSize): void 12 { 13 $samples = $dataset->getSamples(); 14 $labels = $dataset->getTargets(); 15 $datasetSize = count($samples); 16 $testCount = count($this->testSamples); 17 18 for ($i = $datasetSize; $i > 0; --$i) { 19 $key = mt_rand(0, $datasetSize - 1); 20 $setName = (count($this->testSamples) - $testCount) / $datasetSize >= $testSize ? 'train' : 'test'; 21 22 $this->{$setName.'Samples'}[] = $samples[$key]; 23 $this->{$setName.'Labels'}[] = $labels[$key]; 24 } 25 } 26 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body