Penjelasan berikut ini berdasarkan fit_transformdari Imputerkelas, tetapi gagasan adalah sama untuk fit_transformkelas scikit_learn lainnya seperti MinMaxScaler.
transformmengganti 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 fitimputer menghitung sarana kolom dari beberapa data, dan dengan transformitu 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_transformyang pada dasarnya fitdiikuti 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 fitimputer tidak ada hubungannya dengan fitdigunakan dalam pemasangan model. Jadi menggunakan imputer fitpada data pelatihan hanya menghitung rata-rata setiap kolom data pelatihan. Menggunakan transformdata uji kemudian menggantikan nilai data uji yang hilang dengan cara yang dihitung dari data pelatihan.