Penjelasan berikut ini berdasarkan fit_transform
dari Imputer
kelas, tetapi gagasan adalah sama untuk fit_transform
kelas scikit_learn lainnya seperti MinMaxScaler
.
transform
mengganti nilai yang hilang dengan angka. Secara default nomor ini adalah sarana kolom dari beberapa data yang Anda pilih. Perhatikan contoh berikut:
imp = Imputer()
# calculating the means
imp.fit([[1, 3], [np.nan, 2], [8, 5.5]])
Sekarang imputer telah belajar menggunakan rata-rata (1 + 8) / 2 = 4,5 untuk kolom pertama dan rata-rata (2 + 3 + 5.5) / 3 = 3,5 untuk kolom kedua ketika diterapkan pada data dua kolom:
X = [[np.nan, 11],
[4, np.nan],
[8, 2],
[np.nan, 1]]
print(imp.transform(X))
kita mendapatkan
[[4.5, 11],
[4, 3.5],
[8, 2],
[4.5, 1]]
Jadi dengan fit
imputer menghitung sarana kolom dari beberapa data, dan dengan transform
itu berlaku sarana tersebut untuk beberapa data (yang hanya mengganti nilai yang hilang dengan sarana). Jika kedua data ini sama (yaitu data untuk menghitung rata-rata dan data yang berarti diterapkan) Anda dapat menggunakan fit_transform
yang pada dasarnya fit
diikuti oleh a transform
.
Sekarang pertanyaan Anda:
Mengapa kita perlu mengubah data?
"Karena berbagai alasan, banyak dataset dunia nyata mengandung nilai yang hilang, sering dikodekan sebagai blanko, NaNs, atau placeholder lainnya. Namun, dataset tersebut tidak kompatibel dengan penaksir scikit-learning yang mengasumsikan bahwa semua nilai dalam array adalah numerik" ( sumber )
Apa artinya mencocokkan model pada data pelatihan dan mentransformasikannya untuk menguji data?
The fit
imputer tidak ada hubungannya dengan fit
digunakan dalam pemasangan model. Jadi menggunakan imputer fit
pada data pelatihan hanya menghitung rata-rata setiap kolom data pelatihan. Menggunakan transform
data uji kemudian menggantikan nilai data uji yang hilang dengan cara yang dihitung dari data pelatihan.