RandomSplit::splitDataset()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 13
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 9
dl 0
loc 13
rs 9.9666
c 0
b 0
f 0
cc 3
nc 3
nop 2
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
}
27