Phpml\CrossValidation\RandomSplit::splitDataset PHP Method

splitDataset() protected method

protected splitDataset ( Phpml\Dataset\Dataset $dataset, float $testSize )
$dataset Phpml\Dataset\Dataset
$testSize float
    protected function splitDataset(Dataset $dataset, float $testSize)
    {
        $samples = $dataset->getSamples();
        $labels = $dataset->getTargets();
        $datasetSize = count($samples);
        $testCount = count($this->testSamples);
        for ($i = $datasetSize; $i > 0; --$i) {
            $key = mt_rand(0, $datasetSize - 1);
            $setName = (count($this->testSamples) - $testCount) / $datasetSize >= $testSize ? 'train' : 'test';
            $this->{$setName . 'Samples'}[] = $samples[$key];
            $this->{$setName . 'Labels'}[] = $labels[$key];
        }
    }

Usage Example

Example #1
0
 /**
  * @param Dataset $dataset
  * @param float   $testSize
  */
 protected function splitDataset(Dataset $dataset, float $testSize)
 {
     $datasets = $this->splitByTarget($dataset);
     foreach ($datasets as $targetSet) {
         parent::splitDataset($targetSet, $testSize);
     }
 }
RandomSplit