RandomSplit   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 15
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 3
eloc 10
dl 0
loc 15
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A splitDataset() 0 13 3
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