Skip to main content

Workflow End-to-End Scikit-Learn

Setelah memahami konsep dasar workflow Scikit-Learn, sekarang kita akan melihat bagaimana seluruh proses tersebut diterapkan dalam sebuah alur End-to-End Machine Learning.

End-to-End berarti kita melihat proses Machine Learning mulai dari:

Data

Persiapan Data

Pemilihan Model

Training

Prediksi

Evaluasi

Improvement

Penyimpanan Model

Deployment

Dengan memahami alur ini, kita tidak hanya mengetahui syntax Scikit-Learn, tetapi juga memahami bagaimana setiap bagian saling berhubungan dalam sebuah proyek Machine Learning.

Tujuan Pembelajaran

Setelah mempelajari materi ini, kita diharapkan dapat:

  • Memahami workflow Machine Learning secara end-to-end.
  • Menyiapkan environment Python untuk Machine Learning.
  • Mengimpor library yang diperlukan.
  • Membaca dataset menggunakan Pandas.
  • Memisahkan features dan target.
  • Membagi data menjadi training dan testing.
  • Memilih estimator berdasarkan jenis permasalahan.
  • Melatih model menggunakan fit().
  • Membuat prediksi menggunakan predict().
  • Mengevaluasi model menggunakan beberapa metric.
  • Memahami perbedaan performa training dan testing.
  • Memahami tahap lanjutan berupa hyperparameter tuning.
  • Memahami konsep penyimpanan model.
  • Mengenal Pipeline sebagai cara menggabungkan preprocessing dan model.

Gambaran Besar Workflow

Workflow End-to-End Scikit-Learn dapat digambarkan sebagai berikut:

Dataset


Prepare Environment


Load Dataset


Define X and y


Train/Test Split


Choose Estimator


Fit Model


Make Predictions


Evaluate the Model

┌────┴────┐
│ │
Improve? Good?
│ │
▼ │
Tune Parameters │
│ │
└────┬────┘


Save Model


Deployment

Workflow tersebut merupakan kerangka umum. Implementasi sebenarnya dapat berbeda tergantung jenis data dan permasalahan.

Step 0 - Mempersiapkan Environment

Sebelum menulis kode Machine Learning, kita membutuhkan environment Python yang memiliki library yang diperlukan.

Salah satu pendekatan yang dapat digunakan adalah Conda.

Secara sederhana:

Operating System

Conda Environment

Python

Jupyter Notebook

Machine Learning Libraries

Tujuan penggunaan environment adalah menjaga dependency proyek tetap terisolasi dan lebih mudah dikelola.

Mengapa Menggunakan Environment?

Bayangkan kita memiliki dua proyek:

Project A
Python + Library versi tertentu

Project B
Python + Library versi berbeda

Jika semua dependency menggunakan satu environment, perubahan pada satu proyek dapat memengaruhi proyek lainnya.

Dengan environment terpisah:

Environment A
└── Project A

Environment B
└── Project B

masing-masing proyek dapat memiliki dependency yang sesuai.

Library Utama

Pada awal workflow Data Science, beberapa library yang sering digunakan adalah:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

Masing-masing memiliki fungsi berbeda.

Pandas

Pandas digunakan untuk mengelola data tabular.

import pandas as pd

Contohnya:

df = pd.read_csv("heart-disease.csv")

NumPy

NumPy digunakan untuk operasi numerik dan array.

import numpy as np

NumPy banyak digunakan sebagai fondasi operasi numerik di ekosistem Python.

Matplotlib

Matplotlib digunakan untuk visualisasi.

import matplotlib.pyplot as plt

Contoh:

plt.plot(
[1, 2, 3],
[10, 20, 15]
)

plt.show()

Scikit-Learn

Setelah data dipersiapkan dan dieksplorasi, kita menggunakan Scikit-Learn untuk Machine Learning.

Contoh:

from sklearn.model_selection import train_test_split

dan:

from sklearn.ensemble import RandomForestClassifier

Serta metrics:

from sklearn.metrics import accuracy_score

Step 1 - Getting the Data Ready

Tahap pertama adalah mendapatkan dan mempersiapkan data.

Pada contoh ini kita menggunakan dataset Heart Disease.

Misalnya file:

heart-disease.csv

dibaca menggunakan:

import pandas as pd

heart_disease = pd.read_csv(
"heart-disease.csv"
)

Setelah dataset dibaca, kita dapat melihat beberapa baris:

heart_disease.head()

Memeriksa Dataset

Sebelum membangun model, kita perlu memahami dataset.

Beberapa perintah yang berguna:

heart_disease.head()
heart_disease.info()
heart_disease.describe()

dan:

heart_disease.shape

Informasi tersebut membantu kita mengetahui:

  • jumlah baris,
  • jumlah kolom,
  • nama fitur,
  • tipe data,
  • statistik dasar,
  • dan kemungkinan masalah data.

Memisahkan Feature dan Target

Misalnya dataset memiliki kolom:

age
sex
cp
trestbps
chol
thalach
...
target

Kita ingin memprediksi:

target

Maka:

X = heart_disease.drop(
"target",
axis=1
)

y = heart_disease["target"]

Sekarang:

X

Features

y

Target

Memahami X

X berisi data yang akan digunakan model untuk membuat prediksi.

Contoh:

age
sex
cp
trestbps
chol
thalach
...

Jika terdapat 13 fitur dan 303 baris, maka secara konseptual:

X.shape

(303, 13)

Artinya:

303 samples
13 features

Jumlah sebenarnya bergantung pada dataset yang digunakan.

Memahami y

y berisi target.

Contoh:

y = heart_disease["target"]

Jika target merupakan klasifikasi biner, nilainya dapat berupa:

0
1

Secara konseptual:

X

├── Feature 1
├── Feature 2
├── Feature 3
└── ...



Model



y

Step 1.1 - Train Test Split

Setelah X dan y ditentukan, kita membagi data.

Import:

from sklearn.model_selection import train_test_split

Kemudian:

X_train, X_test, y_train, y_test = train_test_split(
X,
y,
test_size=0.2,
random_state=42
)

Sekarang kita memiliki empat variabel:

X_train
y_train
X_test
y_test

Memahami Empat Variabel

X_train

Features yang digunakan untuk training.

y_train

Target yang digunakan untuk training.

X_test

Features yang digunakan untuk evaluasi.

y_test

Target sebenarnya yang digunakan untuk membandingkan hasil prediksi.

Secara sederhana:

Training
├── X_train
└── y_train

Testing
├── X_test
└── y_test

Mengapa Test Data Tidak Digunakan untuk Training?

Tujuannya adalah mengetahui kemampuan model pada data yang tidak digunakan untuk fitting.

Jika:

model.fit(
X_train,
y_train
)

maka model belajar dari training data.

Kemudian:

model.predict(
X_test
)

digunakan untuk melihat bagaimana model bekerja pada data yang tidak digunakan untuk fitting.

Step 2 - Choose the Right Estimator

Setelah data siap, kita memilih estimator.

Dalam Scikit-Learn, banyak algoritma Machine Learning diimplementasikan sebagai estimator.

Pemilihan estimator bergantung pada jenis permasalahan.

Secara sederhana:

Problem

├── Classification
│ ↓
│ Classifier

└── Regression

Regressor

Classification

Classification digunakan ketika target berupa kategori.

Contohnya:

0 / 1
Spam / Not Spam
Sakit / Tidak Sakit
Lulus / Tidak Lulus

Untuk contoh Heart Disease, kita dapat menggunakan:

from sklearn.ensemble import RandomForestClassifier

Kemudian:

clf = RandomForestClassifier(
random_state=42
)

clf adalah objek estimator classification.

Regression

Jika target berupa angka kontinu, kita dapat menggunakan estimator regression.

Contohnya:

from sklearn.ensemble import RandomForestRegressor

Kemudian:

model = RandomForestRegressor(
random_state=42
)

Contoh target regression:

Harga rumah
Penjualan
Suhu
Pendapatan

Classification vs Regression

AspekClassificationRegression
TargetKategoriNilai numerik
ContohSpam / Not SpamHarga
EstimatorRandomForestClassifierRandomForestRegressor
OutputClassNilai numerik

Pemilihan estimator merupakan bagian penting dalam workflow Machine Learning.

Hyperparameter

Estimator biasanya memiliki berbagai hyperparameter.

Contoh:

RandomForestClassifier(
n_estimators=100,
max_depth=10,
random_state=42
)

Di sini:

n_estimators
max_depth
random_state

merupakan konfigurasi yang diberikan kepada estimator.

Hyperparameter dapat diubah untuk melakukan eksperimen dan meningkatkan performa.

Step 3 - Fit the Model

Setelah memilih estimator:

clf = RandomForestClassifier(
random_state=42
)

kita melatih model:

clf.fit(
X_train,
y_train
)

fit() merupakan method yang digunakan untuk melakukan training.

Secara sederhana:

X_train
+
y_train

fit()

Trained Estimator

Apa yang Terjadi Saat fit()?

Detail proses internal bergantung pada algoritma.

Secara umum, estimator menggunakan training data untuk mempelajari parameter internal yang diperlukan model.

Kita tidak perlu mengimplementasikan seluruh algoritma secara manual.

Scikit-Learn menangani implementasi algoritma tersebut.

Step 3.1 - Make Predictions

Setelah training:

y_preds = clf.predict(
X_test
)

Sekarang kita memiliki:

y_test

Actual Values

y_preds

Predicted Values

Keduanya dapat dibandingkan.

Bentuk Input predict()

Model yang telah dilatih mengharapkan struktur fitur yang sesuai dengan data saat training.

Misalnya:

Training:
X_train

13 features

Maka data yang diberikan ke:

clf.predict(...)

harus memiliki struktur fitur yang sesuai.

Inilah salah satu alasan pentingnya memahami:

X.shape

dan:

X_train.shape

Contoh Melihat Shape

Kita dapat menjalankan:

print(X_train.shape)
print(X_test.shape)
print(y_train.shape)
print(y_test.shape)

Contoh hasil:

(242, 13)
(61, 13)
(242,)
(61,)

Angka tersebut hanya ilustrasi dan dapat berbeda tergantung dataset dan pembagian data.

Step 4 - Evaluate the Model

Setelah membuat prediksi:

y_preds = clf.predict(
X_test
)

kita perlu mengevaluasi performa model.

Salah satu cara sederhana adalah:

clf.score(
X_test,
y_test
)

Untuk classifier tertentu, score() biasanya menghasilkan accuracy.

Namun, perilaku score() bergantung pada estimator yang digunakan.

Karena itu, ketika melakukan analisis yang lebih eksplisit, gunakan metric yang sesuai.

Membandingkan Training dan Test Score

Kita dapat menghitung:

clf.score(
X_train,
y_train
)

dan:

clf.score(
X_test,
y_test
)

Contoh:

train_score = clf.score(
X_train,
y_train
)

test_score = clf.score(
X_test,
y_test
)

print("Train score:", train_score)
print("Test score:", test_score)

Jika training score jauh lebih tinggi daripada test score, hal tersebut dapat menjadi sinyal yang perlu diselidiki, termasuk kemungkinan overfitting.

Namun, perbedaan score tersebut tidak boleh langsung dianggap sebagai bukti tunggal overfitting tanpa melihat konteks eksperimen.

Mengapa Training Score Saja Tidak Cukup?

Misalnya:

Train Score = 1.00
Test Score = 0.75

Model sangat baik pada training data.

Namun performanya lebih rendah pada test data.

Hal ini menunjukkan bahwa performa pada training data tidak cukup untuk menggambarkan kemampuan generalisasi model.

Karena itu, evaluasi perlu menggunakan data yang tidak digunakan untuk fitting.

Accuracy Score

Kita juga dapat menggunakan:

from sklearn.metrics import accuracy_score

Kemudian:

accuracy = accuracy_score(
y_test,
y_preds
)

print(accuracy)

Accuracy mengukur proporsi prediksi yang benar.

Secara sederhana:

Prediksi Benar
───────────────
Total Prediksi

Namun accuracy tidak selalu menjadi metric terbaik untuk setiap permasalahan.

Classification Report

Scikit-Learn juga menyediakan:

from sklearn.metrics import classification_report

Kemudian:

print(
classification_report(
y_test,
y_preds
)
)

Classification report biasanya memberikan informasi seperti:

precision
recall
f1-score
support

Metric tersebut memberikan informasi yang lebih detail dibandingkan hanya menggunakan accuracy.

Confusion Matrix

Kita juga dapat menggunakan:

from sklearn.metrics import confusion_matrix

cm = confusion_matrix(
y_test,
y_preds
)

Confusion matrix membantu melihat jumlah prediksi yang masuk ke kategori:

True Positive
True Negative
False Positive
False Negative

Untuk binary classification, konsep sederhananya:

Actual
0 1
┌───────┬───────┐
Predicted 0 │ TN │ FN │
├───────┼───────┤
Predicted 1 │ FP │ TP │
└───────┴───────┘

Confusion matrix sangat berguna untuk memahami jenis kesalahan model, bukan hanya jumlah prediksi yang benar.

Workflow Evaluasi

Setelah model membuat prediksi:

y_test

├──────────────┐
│ │
▼ ▼
Compare Compare
│ │
▼ ▼
Accuracy Confusion Matrix


Classification Report

Kita dapat menggunakan beberapa metric untuk memperoleh gambaran yang lebih lengkap.

Step 5 - Improve the Model

Jika performa model belum sesuai kebutuhan, kita dapat melakukan improvement.

Beberapa pendekatan:

Improve Model

├── Change Model
├── Change Features
├── Feature Engineering
├── Preprocessing
├── Hyperparameter Tuning
└── Cross-Validation

Improvement merupakan proses eksperimen.

Hyperparameter Tuning

Misalnya Random Forest memiliki:

n_estimators
max_depth

Kita dapat mencoba beberapa konfigurasi.

Contoh:

n_estimators
├── 50
├── 100
└── 200

dan:

max_depth
├── 5
├── 10
└── 20

Kemudian kita membandingkan performanya menggunakan validasi yang sesuai.

GridSearchCV

Scikit-Learn menyediakan:

GridSearchCV

untuk melakukan pencarian kombinasi hyperparameter secara sistematis.

Contoh konsep:

from sklearn.model_selection import GridSearchCV

Kemudian kita menentukan parameter:

param_grid = {
"n_estimators": [50, 100, 200],
"max_depth": [5, 10, 20]
}

Grid search kemudian dapat mengevaluasi kombinasi yang tersedia menggunakan cross-validation.

Contoh:

grid = GridSearchCV(
estimator=clf,
param_grid=param_grid,
cv=5
)

Kemudian:

grid.fit(
X_train,
y_train
)

GridSearchCV akan mengevaluasi kombinasi parameter berdasarkan proses cross-validation yang ditentukan.

RandomizedSearchCV

Alternatif lainnya adalah:

RandomizedSearchCV

Contoh:

from sklearn.model_selection import RandomizedSearchCV

Pendekatan ini dapat digunakan ketika ruang pencarian hyperparameter cukup besar dan kita tidak ingin mencoba seluruh kombinasi.

Step 6 - Save and Load Model

Setelah model selesai dikembangkan, kita dapat menyimpannya.

Salah satu library yang umum digunakan:

import joblib

Kemudian:

joblib.dump(
clf,
"heart-disease-model.pkl"
)

Model dapat dimuat kembali:

clf = joblib.load(
"heart-disease-model.pkl"
)

Kemudian digunakan untuk prediksi:

predictions = clf.predict(
X_test
)
tip

Selain joblib, bisa juga menggunakan standard library pickle:

import pickle

# save
pickle.dump(clf, open("random_forest_model_1.pkl", "wb"))

# load
loaded_model = pickle.load(open("random_forest_model_1.pkl", "rb"))
loaded_model.score(X_test, y_test)

Mengapa Model Disimpan?

Tanpa penyimpanan:

Start Application

Train Model

Prediction

Dengan model yang sudah disimpan:

Training

Save

Model File

Load

Prediction

Hal ini penting ketika model ingin digunakan dalam aplikasi.

Step 7 - Putting It All Together

Setelah memahami setiap bagian, kita dapat menggabungkannya.

Workflow lengkap:

Environment

Import Libraries

Load Dataset

Understand Data

Define X and y

Train/Test Split

Choose Estimator

Fit

Predict

Evaluate

Improve

Save

Deploy

Contoh End-to-End Sederhana

Berikut contoh sederhana:

import pandas as pd

from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import (
accuracy_score,
classification_report,
confusion_matrix
)

# --------------------------------
# 1. Load dataset
# --------------------------------

heart_disease = pd.read_csv(
"heart-disease.csv"
)

# --------------------------------
# 2. Define X and y
# --------------------------------

X = heart_disease.drop(
"target",
axis=1
)

y = heart_disease["target"]

# --------------------------------
# 3. Split dataset
# --------------------------------

X_train, X_test, y_train, y_test = train_test_split(
X,
y,
test_size=0.2,
random_state=42
)

# --------------------------------
# 4. Create model
# --------------------------------

clf = RandomForestClassifier(
random_state=42
)

# --------------------------------
# 5. Train model
# --------------------------------

clf.fit(
X_train,
y_train
)

# --------------------------------
# 6. Make predictions
# --------------------------------

y_preds = clf.predict(
X_test
)

# --------------------------------
# 7. Evaluate
# --------------------------------

accuracy = accuracy_score(
y_test,
y_preds
)

print("Accuracy:", accuracy)

print(
classification_report(
y_test,
y_preds
)
)

print(
confusion_matrix(
y_test,
y_preds
)
)

Memahami Kode End-to-End

Mari kita pecah kode tersebut.

Import

import pandas as pd

digunakan untuk membaca dataset.

Kemudian:

from sklearn.model_selection import train_test_split

untuk membagi data.

Selanjutnya:

from sklearn.ensemble import RandomForestClassifier

untuk membuat classifier.

Dan:

from sklearn.metrics import ...

untuk evaluasi.

Load Dataset

heart_disease = pd.read_csv(
"heart-disease.csv"
)

Dataset dimuat menjadi DataFrame.

Define X dan y

X = heart_disease.drop(
"target",
axis=1
)

y = heart_disease["target"]

Sekarang kita memiliki:

X → Features
y → Target

Split

train_test_split(...)

membagi data menjadi training dan testing.

Create Model

clf = RandomForestClassifier(
random_state=42
)

Membuat estimator classification.

Fit

clf.fit(
X_train,
y_train
)

Melatih model.

Predict

y_preds = clf.predict(
X_test
)

Menghasilkan prediksi.

Evaluate

accuracy_score(
y_test,
y_preds
)

Membandingkan hasil prediksi dengan target sebenarnya.

Memahami Aliran Data

Salah satu cara terbaik memahami Scikit-Learn adalah mengikuti perjalanan data.

heart-disease.csv

DataFrame

X, y

Train/Test Split

X_train, y_train

fit()

Trained Model

X_test

predict()

y_preds

Compare with y_test

Evaluation

Jika kita memahami aliran ini, banyak syntax Scikit-Learn menjadi lebih mudah dipahami.

Memahami Shape Data

Shape merupakan salah satu hal yang penting ketika bekerja dengan Scikit-Learn.

Periksa:

print(X.shape)
print(y.shape)

print(X_train.shape)
print(X_test.shape)

print(y_train.shape)
print(y_test.shape)

Secara umum:

X

(samples, features)

y

(samples,)

Misalnya:

X.shape = (303, 13)
y.shape = (303,)

Setelah split:

X_train.shape = (242, 13)
X_test.shape = (61, 13)

y_train.shape = (242,)
y_test.shape = (61,)

Angka tersebut merupakan contoh dan dapat berbeda berdasarkan pembagian dataset.

Kesalahan yang Sering Terjadi

Memasukkan Target ke Dalam X

Jangan melakukan:

X = heart_disease

jika target masih berada di dalam DataFrame tersebut.

Lebih tepat:

X = heart_disease.drop(
"target",
axis=1
)

dan:

y = heart_disease["target"]

Melatih Model Menggunakan Test Data

Hindari:

clf.fit(
X_test,
y_test
)

Test data digunakan untuk evaluasi, bukan sebagai data utama untuk fitting model.

Membandingkan Data dengan Shape yang Tidak Sesuai

Pastikan:

X_test

memiliki struktur fitur yang sesuai dengan data yang digunakan saat training.

Hanya Melihat Training Score

Training score yang tinggi belum menjamin model akan bekerja baik pada data baru.

Periksa juga data evaluasi.

Menganggap .score() Selalu Berarti Accuracy

Arti .score() bergantung pada estimator.

Jika membutuhkan metric tertentu, gunakan fungsi metric yang eksplisit.

Melakukan Tuning Menggunakan Test Set

Jangan terus-menerus memilih hyperparameter berdasarkan test set.

Gunakan validation set atau cross-validation untuk proses tuning, kemudian pertahankan test set untuk evaluasi akhir.

Catatan tentang Data Leakage

Data leakage terjadi ketika informasi yang seharusnya tidak tersedia bagi model pada saat prediksi ikut memengaruhi proses training atau evaluasi.

Contoh sederhana preprocessing:

Seluruh Dataset

Fit Scaler

Train/Test Split

Pendekatan tersebut dapat menyebabkan informasi dari test set ikut memengaruhi preprocessing.

Lebih aman:

Dataset

Train/Test Split

├── Training
│ ↓
│ Fit Scaler

└── Test

Transform

Dalam Scikit-Learn, Pipeline dapat membantu menggabungkan preprocessing dan estimator sehingga workflow lebih aman dan konsisten.

Preview Pipeline

Pipeline memungkinkan beberapa tahap Machine Learning digabungkan menjadi satu objek.

Contoh sederhana:

from sklearn.pipeline import Pipeline

Secara konsep:

Raw Features

Preprocessing

Model

Prediction

Contohnya:

pipeline = Pipeline([
("scaler", scaler),
("model", model)
])

Kemudian:

pipeline.fit(
X_train,
y_train
)

dan:

pipeline.predict(
X_test
)

Pipeline akan menjadi bagian penting ketika kita mulai membahas preprocessing dan workflow Machine Learning yang lebih kompleks.

Workflow Machine Learning yang Lebih Realistis

Workflow End-to-End dalam proyek nyata biasanya tidak sesederhana:

Data → Model → Prediction

Melainkan:

Data Collection

Data Cleaning

Exploratory Data Analysis

Feature Engineering

Train / Validation / Test

Preprocessing

Model Selection

Cross-Validation

Hyperparameter Tuning

Final Evaluation

Save Pipeline

Deployment

Monitoring

Tidak semua proyek membutuhkan setiap langkah dengan tingkat kompleksitas yang sama.

Namun memahami gambaran besar ini akan membantu ketika kita mulai mengembangkan proyek Machine Learning yang lebih realistis.

Prinsip Eksperimen

Machine Learning merupakan proses yang bersifat iteratif.

Kita dapat membayangkannya sebagai:

Experiment

Train

Evaluate

Analyze

Improve

Experiment Again

Misalnya:

Model A

Evaluate

Model B

Evaluate

Model C

Evaluate

Tujuannya bukan sekadar mendapatkan angka metric tertinggi, tetapi mendapatkan model yang sesuai dengan kebutuhan masalah.

Jangan Hanya Mengejar Angka

Misalnya:

Model A → Accuracy 0.85
Model B → Accuracy 0.87

Belum tentu Model B selalu menjadi pilihan yang tepat.

Kita juga perlu mempertimbangkan:

  • metric yang relevan,
  • false positive,
  • false negative,
  • latency,
  • ukuran model,
  • interpretabilitas,
  • biaya komputasi,
  • dan kebutuhan aplikasi.

Dalam Machine Learning, performa model harus dilihat dalam konteks masalah yang diselesaikan.

Tips Belajar Scikit-Learn

Gunakan Notebook untuk Eksperimen

Jupyter Notebook sangat berguna untuk mencoba kode secara bertahap.

Misalnya:

X.shape

kemudian:

X_train.shape

kemudian:

clf.fit(
X_train,
y_train
)

kemudian:

y_preds = clf.predict(
X_test
)

Dengan cara ini kita dapat melihat bagaimana setiap tahap mengubah atau menggunakan data.

Gunakan Shift + Tab

Ketika lupa parameter suatu fungsi, gunakan:

Shift + Tab

di Jupyter Notebook.

Contohnya:

train_test_split(

Kemudian gunakan Shift + Tab untuk melihat signature dan informasi fungsi.

Jika Ragu, Jalankan Kode

Prinsip yang sangat berguna:

If in doubt, run the code.

Contoh:

print(X.shape)

atau:

print(y_preds[:10])

Kemudian analisis outputnya.

Ringkasan

Workflow End-to-End Scikit-Learn dapat diringkas menjadi:

  1. Mempersiapkan environment.
  2. Mengimpor library.
  3. Membaca dataset.
  4. Memahami dataset.
  5. Memisahkan X dan y.
  6. Membagi data menjadi training dan testing.
  7. Memilih estimator.
  8. Melatih model menggunakan fit().
  9. Membuat prediksi menggunakan predict().
  10. Mengevaluasi model.
  11. Melakukan eksperimen dan improvement.
  12. Melakukan hyperparameter tuning jika diperlukan.
  13. Menyimpan model atau pipeline.
  14. Menggunakan model untuk prediction/deployment.

Fungsi dan Method Penting

Fungsi / MethodKegunaan
pd.read_csv()Membaca dataset CSV
train_test_split()Membagi dataset
fit()Melatih estimator
predict()Membuat prediksi
predict_proba()Menghasilkan probabilitas kelas pada estimator yang mendukung
score()Menghasilkan score default estimator
accuracy_score()Menghitung accuracy
classification_report()Menampilkan precision, recall, F1-score, dan support
confusion_matrix()Menampilkan confusion matrix
GridSearchCVHyperparameter tuning sistematis
RandomizedSearchCVHyperparameter tuning berbasis sampling
joblib.dump()Menyimpan model
joblib.load()Memuat model
PipelineMenggabungkan beberapa tahap workflow

Konsep Utama yang Harus Diingat

Pola dasar Scikit-Learn:

X, y

train_test_split()

X_train, X_test
y_train, y_test

Choose Estimator

fit(X_train, y_train)

predict(X_test)

y_preds

Compare with y_test

Evaluate

Jika performanya belum sesuai:

Evaluate

Improve

Tune

Evaluate Again

Jika sudah siap digunakan:

Trained Model

Save

Load

Prediction

Deployment

Kesimpulan

Workflow End-to-End Scikit-Learn memberikan kerangka untuk memahami bagaimana sebuah proyek Machine Learning dibangun dari awal hingga model siap digunakan.

Yang paling penting bukan menghafal setiap fungsi, tetapi memahami alur data dan tujuan setiap tahap:

Data

X dan y

Train/Test Split

Estimator

Fit

Predict

Evaluate

Improve

Save

Deploy

Setelah memahami workflow ini, kita dapat mulai mempelajari masing-masing tahap secara lebih mendalam, terutama pemilihan estimator, preprocessing, evaluasi, dan hyperparameter tuning.