*/ public function compatibility() : array { return [ DataType::continuous(), ]; } /** * Transform the dataset in place. * * @param array $samples */ public function transform(array &$samples) : void { array_walk($samples, [$this, 'normalize']); } /** * Normalize a sample by its L1 norm. * * @param list $sample */ protected function normalize(array &$sample) : void { $norm = array_sum(array_map('abs', $sample)); if ($norm == 0) { return; } foreach ($sample as &$value) { $value /= $norm; } } /** * Return the string representation of the object. * * @internal * * @return string */ public function __toString() : string { return 'L1 Normalizer'; } }