From 417174d1432483afdc7407d6f08b2b8386cbd7fc Mon Sep 17 00:00:00 2001 From: Arkadiusz Kondas Date: Sun, 12 May 2019 22:41:31 +0200 Subject: [PATCH] Implement ColumnFilter preprocessor (#378) --- src/Preprocessing/ColumnFilter.php | 42 ++++++++++++++++++++++++ tests/Preprocessing/ColumnFilterTest.php | 27 +++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 src/Preprocessing/ColumnFilter.php create mode 100644 tests/Preprocessing/ColumnFilterTest.php diff --git a/src/Preprocessing/ColumnFilter.php b/src/Preprocessing/ColumnFilter.php new file mode 100644 index 0000000..afe2db7 --- /dev/null +++ b/src/Preprocessing/ColumnFilter.php @@ -0,0 +1,42 @@ +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)); + } + } +} diff --git a/tests/Preprocessing/ColumnFilterTest.php b/tests/Preprocessing/ColumnFilterTest.php new file mode 100644 index 0000000..243c7eb --- /dev/null +++ b/tests/Preprocessing/ColumnFilterTest.php @@ -0,0 +1,27 @@ +transform($samples); + + self::assertEquals([[100000, 4], [120000, 12], [200000, 0]], $samples); + } +}