Mengurai alur lengkap pipeline machine learning dari data mentah hingga deployment, memahami pembagian train/validation/test yang benar, API konsisten scikit-learn (fit, predict, transform), serta pentingnya reproducibility lewat random seed dan environment yang terkontrol.

Setelah di episode 1 kita memahami definisi dan jenis-jenis ML — supervised, unsupervised, hingga reinforcement learning — pada episode ini kita membangun pola kerja yang akan menemani kita sepanjang series: pipeline dan tooling.
Mengapa memahami pipeline di awal itu penting? Karena sebagian besar kegagalan proyek ML bukan di model, melainkan di tahap sebelum dan sesudahnya: data kotor, split yang salah, dan eksperimen yang tidak bisa diulang. Kalian boleh saja memakai model tercanggih, tetapi jika prosesnya berantakan, hasilnya tidak akan dipercaya.
Pipeline ML standar 2026 terlihat seperti ini:
Setiap tahap punya tanggung jawab sendiri dan saling bergantung. Mari bedah satu per satu.
Data mentah hampir tidak pernah siap dipakai langsung: ada nilai hilang, skala yang sangat berbeda antar kolom, dan kategori yang harus di-encode. Preprocessing menormalkan semuanya sehingga model bisa belajar dengan baik. Detail lengkapnya ada di episode 4.
Kita tidak boleh mengevaluasi model dengan data yang sama yang dipakai untuk belajar — model akan "hafal" (overfit) dan nilainya menipu. Karena itu data dipecah menjadi tiga bagian:
| Split | Fungsi | Porsi umum |
|---|---|---|
| Train | Tempat model belajar pola | 60-80% |
| Validation | Menyempurnakan hyperparameter | 10-20% |
| Test | Evaluasi final yang jujur | 10-20% |
Aturan emasnya: test set hanya disentuh sekali di akhir. Jika kalian mengubah model berdasarkan hasil test, maka test bukan lagi test — ia telah "bocor" menjadi validation.
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42, stratify=y
)Parameter random_state=42 membuat pembagian deterministik — kapan pun dijalankan, hasilnya sama. Ini bagian dari reproducibility yang kita bahas lebih jauh di bawah.
Model dilatih di train set, dievaluasi di validation set, lalu hyperparameter disesuaikan. Proses ini berulang (lihat loop pada diagram) sampai performa validation memuaskan. Baru setelah itu kita uji sekali di test set. Episode 10 akan membahas evaluasi dan tuning secara mendalam.
Model yang sudah dianggap baik di-export dan disajikan sebagai API atau batch job. Setelah berjalan di produksi, performanya harus terus dipantau karena data di dunia nyata berubah seiring waktu (drift) — ini topik episode 17 dan 18.
Salah satu alasan scikit-learn mudah dipelajari: seluruh estimator memakai API yang sama. Tiga metode utama:
fit(X, y) — belajar dari data.predict(X) — menghasilkan prediksi.transform(X) — mengubah data (khusus transformer seperti scaler dan encoder).Konsistensi ini membuat pipeline mudah disusun: sebuah transformer bisa dipasang di depan estimator dan semuanya mengalir.
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X_train) # belajar skala + ubah train
clf = LogisticRegression()
clf.fit(X_scaled, y_train) # belajar dari data ter-scaled
# Data test harus ditransform dengan scaler yang SAMA (bukan refit!)
X_test_scaled = scaler.transform(X_test)
preds = clf.predict(X_test_scaled)Warning
Perhatikan bahwa fit_transform hanya dipanggil pada data train. Untuk data test kita memanggil transform saja — me-refit scaler pada test set adalah data leakage yang membuat evaluasi jadi tidak jujur.
Daripada menulis langkah demi langkah manual seperti di atas (yang rawan salah urut), scikit-learn menyediakan objek Pipeline:
from sklearn.pipeline import Pipeline
pipeline = Pipeline([
("scaler", StandardScaler()),
("clf", LogisticRegression()),
])
pipeline.fit(X_train, y_train)
score = pipeline.score(X_test, y_test)Kelebihannya: satu objek mengingat seluruh urutan transformasi, sehingga risiko leakage berkurang dan kode lebih bersih. Pipeline akan menjadi kebiasaan yang sangat berguna mulai episode 4.
Reproducibility berarti orang lain (atau kalian sendiri tiga bulan lagi) bisa menjalankan kode dan mendapatkan hasil yang sama. Sumber acak utama di ML adalah:
train_test_split).Untuk mengendalikannya, set seed secara konsisten:
import random
import numpy as np
random.seed(42)
np.random.seed(42)
# Model tertentu juga punya parameter random_state sendiri
clf = LogisticRegression(random_state=42)Di episode 11 kita akan membahas reproducibility tingkat lanjut: hashing data, pencatatan environment, dan experiment tracking dengan MLflow.
Workflow standar yang akan kita pakai sepanjang series:
| Tahap | Tool |
|---|---|
| Eksplorasi data | Jupyter Notebook |
| Manipulasi data | Pandas |
| Preprocessing & modeling | scikit-learn |
| Visualisasi | Matplotlib, Seaborn |
| Tracking (episode 11) | MLflow |
| Deployment (episode 18) | FastAPI, Docker |
Jupyter sangat ideal untuk iterasi cepat di tahap eksplorasi; untuk otomasi produksi kita pindah ke script Python murni di episode 17 dan 18.
Pada episode 2 ini, kalian telah memahami pola kerja yang akan dipakai sepanjang series.
Inti yang harus dibawa pulang:
fit, predict, transform — konsisten untuk semua estimator.Pipeline untuk menghindari data leakage.random_state dan seed agar eksperimen reproducible.Di episode 3 selanjutnya kita akan membahas matematika dasar untuk ML — aljabar linear (vektor, matriks, dot product), kalkulus intuitif (turunan dan gradient), serta probabilitas dan statistik (distribusi, mean/variance, korelasi) yang menjadi bahasa di balik setiap model. Pastikan venv kalian aktif, karena episode 3 penuh dengan contoh NumPy. Sampai jumpa di episode 3!