Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 3.10.x will end 8 November 2021 (12 months).
  • Bug fixes for security issues in 3.10.x will end 9 May 2022 (18 months).
  • PHP version: minimum PHP 7.2.0 Note: minimum PHP version has increased since Moodle 3.8. PHP 7.3.x and 7.4.x are supported too.
   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  }