php-ml/src/Preprocessing/ColumnFilter.php

43 lines
1.0 KiB
PHP

<?php
declare(strict_types=1);
namespace Phpml\Preprocessing;
final class ColumnFilter implements Preprocessor
{
/**
* @var string[]
*/
private $datasetColumns = [];
/**
* @var string[]
*/
private $filterColumns = [];
public function __construct(array $datasetColumns, array $filterColumns)
{
$this->datasetColumns = array_map(static function (string $column): string {
return $column;
}, $datasetColumns);
$this->filterColumns = array_map(static function (string $column): string {
return $column;
}, $filterColumns);
}
public function fit(array $samples, ?array $targets = null): void
{
//nothing to do
}
public function transform(array &$samples, ?array &$targets = null): void
{
$keys = array_intersect($this->datasetColumns, $this->filterColumns);
foreach ($samples as &$sample) {
$sample = array_values(array_intersect_key($sample, $keys));
}
}
}