Tutorial Scikit-Learn: Pipeline Klasifikasi Pertama
Pipeline menjaga urutan preprocessing dan pemodelan tetap konsisten. Contoh ini memakai dataset bawaan untuk mempelajari alur eksperimen; hasilnya tidak mewakili kesiapan model untuk digunakan pada data operasional.
Periksa data dan baseline
Lihat ukuran dataset, jenis fitur, dan distribusi label. Buat pembanding sederhana, misalnya selalu memilih kelas mayoritas. Tetapkan metrik sebelum membandingkan hasil. Dataset latihan membantu memahami API, tetapi tidak membuktikan bahwa model mampu menangani variasi kondisi yang tidak terdapat dalam latihan.
Split sebelum fit
Pisahkan data terlebih dahulu dan gunakan stratifikasi bila sesuai dengan masalah klasifikasi. Pertimbangkan split waktu atau kelompok untuk dataset yang membutuhkannya. Seed membantu mengulang contoh yang sama, tetapi satu pembagian data belum tentu cukup mewakili ketidakpastian hasil. Simpan bagian test untuk pemeriksaan akhir.
Gabungkan transformer dan estimator
Letakkan scaler sebelum estimator. Saat fit dipanggil, transformer belajar dari train, lalu transformasi yang sama digunakan pada data baru. Untuk tabel campuran angka dan kategori, rancang transformasi per jenis kolom. Dokumentasikan fitur wajib agar aplikasi tidak mengirim nilai dengan urutan atau makna yang berbeda.
Evaluasi dan simpan bukti
Tampilkan contoh salah prediksi dan bandingkan dengan baseline. Buat hipotesis sebelum mengganti parameter. Setelah konfigurasi dipilih melalui validasi, periksa test. Simpan dependensi, konfigurasi, serta pipeline agar eksperimen dapat dijalankan ulang tanpa menebak langkah preprocessing yang dilakukan sebelumnya.
Contoh Latihan
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
X, y = load_iris(return_X_y=True)
a, b, c, d = train_test_split(X, y, stratify=y, random_state=42)
model = make_pipeline(StandardScaler(), LogisticRegression(max_iter=1000))
model.fit(a, c)
print(model.score(b, d))Tugas Praktik
Bandingkan model contoh dengan prediksi kelas mayoritas. Laporkan pembagian data, skor, dan contoh kegagalannya.
Periksa Hasilmu
- Split sebelum fit
- Transformasi dalam pipeline
- Baseline tersedia
- Batas evaluasi dijelaskan
Bacaan lanjutan: Scikit-learn: common pitfalls.