Poniższy opis opiera się na fit_transform
z Imputer
klasą, ale idea jest taka sama dla fit_transform
innych klas scikit_learn podoba MinMaxScaler
.
transform
zastępuje brakujące wartości liczbą. Domyślnie liczba ta oznacza kolumny niektórych wybranych danych. Rozważ następujący przykład:
imp = Imputer()
# calculating the means
imp.fit([[1, 3], [np.nan, 2], [8, 5.5]])
Teraz imputer nauczył się używać średniej (1 + 8) / 2 = 4,5 dla pierwszej kolumny i średniej (2 + 3 + 5,5) / 3 = 3,5 dla drugiej kolumny, gdy zostanie zastosowana do danych dwukolumnowych:
X = [[np.nan, 11],
[4, np.nan],
[8, 2],
[np.nan, 1]]
print(imp.transform(X))
dostajemy
[[4.5, 11],
[4, 3.5],
[8, 2],
[4.5, 1]]
Tak więc według fit
imputera oblicza średnie kolumn z niektórych danych, i przez transform
to stosuje te środki do niektórych danych (co po prostu zastępuje brakujące wartości środkami). Jeśli oba te dane są takie same (tj. Dane do obliczenia średnich i dane, które dotyczą tych środków), możesz użyć, fit_transform
co w zasadzie fit
następuje po nim transform
.
Teraz twoje pytania:
Dlaczego możemy potrzebować przekształcać dane?
„Z różnych powodów wiele rzeczywistych zestawów danych zawiera brakujące wartości, często kodowane jako spacje, NaN lub inne symbole zastępcze. Takie zestawy danych są jednak niezgodne z estymatorami scikit-learn, które zakładają, że wszystkie wartości w tablicy są numeryczne” ( źródło )
Co to znaczy dopasowywanie modelu do danych treningowych i przekształcanie w dane testowe?
fit
O imputer nie ma nic wspólnego z fit
używanych w modelu oprawy. Tak więc użycie imputera do fit
danych treningowych po prostu oblicza średnie z każdej kolumny danych treningowych. Wykorzystanie transform
danych testowych zastępuje następnie brakujące wartości danych testowych środkami obliczonymi na podstawie danych treningowych.