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 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body