Teori sudah berhimpun di 22 episode pertama. Sekarang saatnya bukti: satu proyek kecil, dari nol sampai model menghasilkan angka akurasi. Saya pilih dataset iris — klasik, kecil, dan bisa dijalankan di laptop apa pun tanpa GPU. Tujuannya bukan angka akurasi setinggi mungkin, tapi membiasakan otot alur kerja ML: load data, split, train, evaluasi. Kalau Anda belum pernah menyelesaikan satu siklus penuh, episode ini teman yang pas.
Rencana Proyek
- Dataset iris: 150 sampel bunga, 4 fitur (panjang/lebar sepal & petal), 3 kelas.
- Model: RandomForestClassifier — kuat, minim tuning, cocok untuk baseline.
- Metrik: accuracy plus classification report per kelas.
- Semua dalam satu file Python yang bisa dijalankan ulang kapan saja.
Kode Lengkap
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, classification_report
# 1. Load data
iris = load_iris()
X, y = iris.data, iris.target
# 2. 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
)
# 3. Train
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
# 4. Evaluasi
y_pred = model.predict(X_test)
print("Akurasi:", accuracy_score(y_test, y_pred))
print(classification_report(y_test, y_pred, target_names=iris.target_names))
importance = dict(zip(iris.feature_names, model.feature_importances_.round(3)))
print("Feature importance:", importance)Jalankan dengan python klasifikasi_iris.py. Di mesin saya hasilnya akurasi tinggi di kisaran 90%+ — wajar untuk dataset semudah iris; jangan jadikan ini tolok ukur kesulitan ML.
Kenapa Tiap Langkah Penting
- random_state tetap: supaya hasil reproducible — versi “seed” dunia ML.
- stratify=y: proporsi kelas di train dan test tetap seimbang.
- test_size=0.2: 80/20 adalah titik awal umum untuk dataset kecil.
- Evaluasi di test set terpisah: menilai model dari data latihnya sendiri itu seperti ujian dengan kunci jawaban di tangan.
Eksperimen Lanjutan
Setelah baseline jalan, coba variasikan untuk merasakan pengaruh tiap keputusan:
- Ganti model ke
LogisticRegressionatauKNeighborsClassifier, bandingkan akurasinya. - Hapus
stratify=ydan lihat efeknya pada laporan per kelas. - Gunakan
cross_val_score(model, X, y, cv=5)untuk evaluasi yang lebih stabil daripada satu split. - Cek confusion matrix dengan
confusion_matrix(y_test, y_pred).
| Langkah | Fungsi scikit-learn | Peran |
|---|---|---|
| Load data | load_iris() | Ambil fitur & label |
| Split | train_test_split() | Pisahkan data latih & uji |
| Train | model.fit() | Belajar pola dari data latih |
| Evaluasi | accuracy_score() | Ukur performa di data uji |
Yang paling terasa dari proyek kecil ini: siklusnya pendek, umpan balik cepat, dan konsep-konsep episode sebelumnya (split, overfitting, metrik) akhirnya terasa nyata. Dari sini naik kelasnya tinggal ganti dataset — misalnya data tabular sendiri dari pekerjaan sehari-hari — dan alurnya persis sama.
Komentar Terbaru