Mengapa Anda Membutuhkan Pipeline?
Banyak pemula dalam Machine Learning terjebak dalam penulisan kode yang berantakan: melakukan scaling data di satu tempat, mengisi nilai yang hilang (imputing) di tempat lain, dan melatih model secara terpisah. Masalah muncul saat Anda harus menerapkan hal yang sama pada data pengujian atau data baru di masa depan.
Di tahun 2026 ini, efisiensi kode adalah segalanya. Scikit-Learn Pipeline memungkinkan Anda membungkus semua langkah transformasi data dan estimasi model ke dalam satu objek tunggal. Hal ini mencegah kebocoran data (data leakage) dan memastikan alur kerja Anda konsisten.
Persiapan Lingkungan
Pastikan Anda sudah menginstal pustaka yang diperlukan:
pip install scikit-learn pandas
Langkah 1: Mempersiapkan Dataset
Kita akan menggunakan dataset sederhana untuk memprediksi kategori. Mari kita buat skenario di mana kita memiliki data numerik dan kategori yang memerlukan pra-pemrosesan berbeda.
import pandas as pd
from sklearn.model_selection import train_test_split
# Contoh data
data = pd.read_csv('dataset_anda.csv')
X = data.drop('target', axis=1)
y = data['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
Langkah 2: Membuat Transformer
Kita gunakan ColumnTransformer untuk menangani kolom yang berbeda. Misalnya, kita akan mengisi nilai kosong pada angka dengan rata-rata dan melakukan One-Hot Encoding pada teks.
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler, OneHotEncoder
# Pipeline untuk fitur numerik
numeric_transformer = Pipeline(steps=[
('imputer', SimpleImputer(strategy='median')),
('scaler', StandardScaler())
])
# Pipeline untuk fitur kategori
categorical_transformer = Pipeline(steps=[
('imputer', SimpleImputer(strategy='constant', fill_value='missing')),
('onehot', OneHotEncoder(handle_unknown='ignore'))
])
preprocessor = ColumnTransformer(
transformers=[
('num', numeric_transformer, ['usia', 'pendapatan']),
('cat', categorical_transformer, ['kota', 'pekerjaan'])
])
Langkah 3: Menggabungkan Preprocessor dengan Model
Sekarang, kita satukan tahap pra-pemrosesan tadi dengan algoritma Machine Learning (misal: Random Forest).
from sklearn.ensemble import RandomForestClassifier
# Pipeline Utama
clf = Pipeline(steps=[('preprocessor', preprocessor),
('classifier', RandomForestClassifier())])
# Melatih Model
clf.fit(X_train, y_train)
# Evaluasi
print(f"Skor Model: {clf.score(X_test, y_test):.2f}")
Keuntungan Menggunakan Alur Ini
- Konsistensi: Transformasi yang sama yang diterapkan pada training set akan otomatis diterapkan pada test set.
- Kemudahan Deployment: Anda cukup menyimpan satu objek
clfmenggunakanjoblibataupickle, dan model tersebut siap menerima data mentah saat diproduksi. - Optimasi Parameter: Anda bisa melakukan Grid Search pada seluruh pipeline sekaligus, termasuk mencari strategi imputasi terbaik.
Kesimpulan
Membangun Pipeline adalah tanda kedewasaan seorang Data Scientist. Dengan membiasakan diri menggunakan struktur ini, kode Anda akan lebih mudah dibaca, dipelihara, dan skalabel untuk proyek yang lebih besar.
