Materi
Model yang menghitung jarak atau bobot, seperti k-NN dan regresi logistik, peka terhadap skala fitur. StandardScaler mengubah setiap kolom menjadi rata-rata 0 dan simpangan baku 1: (x − rata-rata) ÷ simpangan baku. MinMaxScaler memetakan setiap kolom ke rentang 0 sampai 1 berdasarkan nilai terkecil dan terbesarnya. Keduanya transformer: fit mempelajari rata-rata atau batasnya, transform menerapkannya, dan fit_transform melakukan keduanya sekaligus.
Halaman Common pitfalls scikit-learn menyebut kesalahan paling sering di sini: kebocoran data. Scaler harus di-fit dengan data latih saja, lalu data uji cukup di-transform. Bila data uji ikut di-fit, informasinya bocor ke model dan skor uji terlihat lebih bagus daripada kenyataan. Akibatnya nilai data uji boleh saja keluar dari rentang 0–1 pada MinMaxScaler.
Pipeline merangkai langkah-langkah itu menjadi satu estimator. make_pipeline(StandardScaler(), KNeighborsClassifier()) melakukan fit scaler lalu fit model saat fit dipanggil, dan transform lalu predict saat predict dipanggil. Di dalam cross_val_score, scaler pada pipeline di-fit ulang di setiap lipatan, sehingga kebocoran tidak terjadi.
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import MinMaxScaler
from sklearn.linear_model import LogisticRegression
pipa = make_pipeline(MinMaxScaler(), LogisticRegression())
print(pipa.steps[0][0], pipa.steps[1][0]) # minmaxscaler logisticregression