ColumnFilter   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 33
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 4
eloc 12
c 1
b 0
f 0
dl 0
loc 33
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A fit() 0 2 1
A transform() 0 6 2
A __construct() 0 8 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Phpml\Preprocessing;
6
7
final class ColumnFilter implements Preprocessor
8
{
9
    /**
10
     * @var string[]
11
     */
12
    private $datasetColumns = [];
13
14
    /**
15
     * @var string[]
16
     */
17
    private $filterColumns = [];
18
19
    public function __construct(array $datasetColumns, array $filterColumns)
20
    {
21
        $this->datasetColumns = array_map(static function (string $column): string {
22
            return $column;
23
        }, $datasetColumns);
24
        $this->filterColumns = array_map(static function (string $column): string {
25
            return $column;
26
        }, $filterColumns);
27
    }
28
29
    public function fit(array $samples, ?array $targets = null): void
30
    {
31
        //nothing to do
32
    }
33
34
    public function transform(array &$samples, ?array &$targets = null): void
35
    {
36
        $keys = array_intersect($this->datasetColumns, $this->filterColumns);
37
38
        foreach ($samples as &$sample) {
39
            $sample = array_values(array_intersect_key($sample, $keys));
40
        }
41
    }
42
}
43