Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 4.2.x will end 22 April 2024 (12 months).
  • Bug fixes for security issues in 4.2.x will end 7 October 2024 (18 months).
  • PHP version: minimum PHP 8.0.0 Note: minimum PHP version has increased since Moodle 4.1. PHP 8.1.x is supported too.
   1  <?php
   2  
   3  declare(strict_types=1);
   4  
   5  namespace Phpml\Preprocessing;
   6  
   7  final class NumberConverter implements Preprocessor
   8  {
   9      /**
  10       * @var bool
  11       */
  12      private $transformTargets;
  13  
  14      /**
  15       * @var mixed
  16       */
  17      private $nonNumericPlaceholder;
  18  
  19      /**
  20       * @param mixed $nonNumericPlaceholder
  21       */
  22      public function __construct(bool $transformTargets = false, $nonNumericPlaceholder = null)
  23      {
  24          $this->transformTargets = $transformTargets;
  25          $this->nonNumericPlaceholder = $nonNumericPlaceholder;
  26      }
  27  
  28      public function fit(array $samples, ?array $targets = null): void
  29      {
  30          //nothing to do
  31      }
  32  
  33      public function transform(array &$samples, ?array &$targets = null): void
  34      {
  35          foreach ($samples as &$sample) {
  36              foreach ($sample as &$feature) {
  37                  $feature = is_numeric($feature) ? (float) $feature : $this->nonNumericPlaceholder;
  38              }
  39          }
  40  
  41          if ($this->transformTargets && is_array($targets)) {
  42              foreach ($targets as &$target) {
  43                  $target = is_numeric($target) ? (float) $target : $this->nonNumericPlaceholder;
  44              }
  45          }
  46      }
  47  }