Uzupełnianie brakujących wartości – PHP-ML

Z różnych powodów, wiele zestawów danych ze świata rzeczywistego, zawiera brakujących wartości, często oznaczone jako puste pola, nulle lub inne symbole.

W takich celach (PHP-ML) zaimplementowałem klasę Imputer, która służy do uzupełniania brakujących wartości.

Parametry konstruktora

  • $missingValue (mixed) – wartość, która ma zostać zastąpiona (domyślnie null)
  • $strategy (Strategy) – strategia uzupełniania (interfejs, zaimplementowane strategie poniżej)
  • $axis (int) – oś do obliczeń (kolumny lub wiersze: Imputer::AXIS_COLUMN lub Imputer::AXIS_ROW)

Strategie

  • MeanStrategy – uzupełnia brakujące wartości wyliczając średnią wartość wzdłuż zadanej osi
  • MedianStrategy -uzupełnia brakujęca wartości wyliczając medianę wzdłuż zadanej osi
  • MostFrequentStrategy -uzupełnia brakujące wartości wyliczając najczęściej powtarzająca się wartość wzdłuż zadanej osi

Przykład użycia

use Phpml\Preprocessing\Imputer;
use Phpml\Preprocessing\Imputer\Strategy\MeanStrategy;

$data = [
    [1, null, 3, 4],
    [4, 3, 2, 1],
    [null, 6, 7, 8],
    [8, 7, null, 5],
];

$imputer = new Imputer(null, new MeanStrategy(), Imputer::AXIS_COLUMN);
$imputer->preprocess($data);

W tym przypadku uzupełniać będziemy null wyliczając średnią wartość w danej kolumnie. Po przejściu przez podany kod tablica $data będzie wyglądać następująco:

$data = [
    [1, 5.33, 3, 4],
    [4, 3, 2, 1],
    [4.33, 6, 7, 8],
    [8, 7, 4, 5],
];