Seluruh chapter konsep sebelumnya — dari terminologi, preprocessing, validasi silang, hingga praktik machine learning yang bertanggung jawab — kini diuji dalam satu proyek utuh. Kita akan membangun model regresi yang memprediksi harga rumah di lima kota Jabodetabek dari data listing tabular: membangkitkan dataset sendiri, menginterogasi kualitasnya, merancang pipeline preprocessing yang aman dari data leakage, membandingkan tiga keluarga model lewat GridSearchCV, dan menutup semuanya dengan evaluasi holdout serta laporan tertulis untuk pemangku kepentingan. Proyek ini juga menjadi tempat keputusan-keputusan kecil yang tidak pernah muncul di contoh mainan: kolom mana yang diimputasi, pencilan mana yang dipertahankan, dan metrik mana yang dipakai untuk memutuskan model final. Seluruh keputusan tersebut hidup dalam lima skrip Python yang dapat dijalankan ulang dengan hasil identik.
Apa yang Kita Bangun #
Deliverable proyek ini konkret, bukan sekadar narasi. Pertama, dataset data/rumah.csv berisi 400 baris listing dengan lima fitur dan satu target harga_juta. Kedua, pipeline preprocessing yang memisahkan perlakuan fitur numerik dan kategorikal di dalam satu objek ColumnTransformer. Ketiga, hasil pembandingan tiga model — Ridge, Lasso, dan RandomForestRegressor — dengan hyperparameter terbaiknya. Keempat, evaluasi holdout dengan MAE, RMSE, dan R2. Kelima, laporan plain text di laporan/laporan-harga-rumah.txt yang merangkum data, preprocessing, metrik, dan temuan dalam satu berkas yang bisa dibaca tanpa alat bantu apa pun.
Struktur folder proyek mengikuti pembagian kerja tersebut. Kode hidup semua berada di src/, dikelompokkan dengan nomor urut sesuai tahapan; setiap bagian menyematkan skrip terkait sehingga pembaca bisa mengunduh dan menjalankannya langsung.
proyek-regresi-harga-rumah/
├── _index.md
├── bagian/
│ ├── part-1-eksplorasi-data/
│ ├── part-2-preprocessing-dan-pipeline/
│ ├── part-3-pelatihan-dan-optimasi-model/
│ └── part-4-evaluasi-dan-laporan/
├── data/
│ └── rumah.csv
├── src/
│ ├── 01_bangun_data.py
│ ├── 02_eksplorasi.py
│ ├── 03_preprocessing.py
│ ├── 04_model.py
│ └── 05_laporan.py
└── laporan/
└── laporan-harga-rumah.txtPeta Empat Bagian #
Proyek dipecah menjadi empat bagian yang dirancang seperti sprint berurutan; setiap bagian menutup satu kelompok keputusan dan membuka kelompok berikutnya.
| Bagian | Fokus keputusan | Skrip | Keluaran utama |
|---|---|---|---|
| Bagian 1: Eksplorasi Data | Kualitas data, pola awal, pencilan | 01_bangun_data.py, 02_eksplorasi.py | data/rumah.csv dan temuan awal |
| Bagian 2: Preprocessing dan Pipeline | Imputasi, scaling, encoding, keamanan leakage | 03_preprocessing.py | Matriks fitur 9 kolom siap model |
| Bagian 3: Pelatihan dan Optimasi Model | Pembandingan model, tuning hyperparameter | 04_model.py | Model juara hasil GridSearchCV |
| Bagian 4: Evaluasi dan Laporan | Metrik holdout, diagnostik sisaan, laporan | 05_laporan.py | Laporan final dan keputusan model |
Urutan ini bukan formalitas. Temuan eksplorasi menentukan resep preprocessing; resep preprocessing menentukan ruang kandidat model; dan seluruh pilihan baru dianggap sah setelah lolos data uji yang tidak pernah disentuh. Jika salah satu mata rantai dilewati — misalnya langsung melompat ke GridSearchCV tanpa memeriksa nilai hilang — keputusan akhir berdiri di atas asumsi yang tidak pernah diverifikasi.
Dataset: Listing Jabodetabek Sintetis #
Dataset proyek ini sintetis dan dibangkitkan sendiri, dengan tiga alasan yang disengaja. Pertama, reproduksibilitas penuh: pembangkit memakai np.random.default_rng(42) sehingga setiap pembaca mendapatkan berkas CSV yang identik bit demi bit, dan laporan yang sama pula. Kedua, kejujuran evaluasi: karena fungsi pembangkit harga diketahui, kita tahu pasti kapan model berhasil mendekati struktur sebenarnya dan kapan hasil bagus hanya kebetulan. Ketiga, kendali penuh atas kekusahan data: nilai hilang dan pencilan realistis disisipkan pada posisi yang diketahui, sehingga Bagian 1 punya bahan nyata untuk dikerjakan.
Lima fitur yang tersedia adalah luas_m2, kamar_tidur, usia_bangunan, jarak_pusat_km, dan kota (Jakarta, Bogor, Depok, Tangerang, Bekasi). Harga mengikuti fungsi linear atas fitur numerik ditambah penambah harga per kota dan derau Gaussian — struktur yang cukup sederhana untuk dipahami, namun cukup realistis untuk melatih disiplin proses. Data portal properti nyata tentu lebih kompleks; proyek ini memprioritaskan kejelasan alur kerja.
Kontrak Determinisme dan Cara Menjalankan #
Setiap skrip memakai path relatif (data/rumah.csv, laporan/...) dan wajib dijalankan dari root folder proyek, karena folder data/ dan laporan/ memang berada di root. Seluruh sumber ketidakpastian dikunci: random_state=42 pada setiap estimator dan pemisahan data, n_jobs=1 pada RandomForestRegressor, tanpa stempel waktu pada keluaran. Skrip tercepat selesai di bawah sepuluh detik dan skrip terberat — grid search — tetap di bawah sepuluh detik pada mesin biasa. Jalankan dua kali dan keluarannya identik; itulah standar yang dipertahankan di seluruh course ini.
cd proyek-regresi-harga-rumah
python3 src/01_bangun_data.py
python3 src/02_eksplorasi.pyPeta sudah tergelar dan kontrak sudah jelas. Pekerjaan pertama menanti di Bagian 1: Eksplorasi Data — kita bangkitkan dataset, periksa kualitasnya, dan gali pola awal yang akan menentukan seluruh keputusan preprocessing di bagian-bagian berikutnya.
Referensi Resmi #
- scikit-learn User Guide: Pipeline dan Composite Estimators — arsitektur ColumnTransformer dan Pipeline yang menjadi kerangka alur proyek ini.
- scikit-learn User Guide: Model Evaluation — definisi resmi metrik MAE, RMSE, dan R2 yang dipakai pada evaluasi holdout.
- pandas Documentation: User Guide — referensi operasi DataFrame untuk eksplorasi data.
Muat dataset harga rumah, periksa kualitas data, dan temukan pola awal yang relevan.
Buka → # Bagian 2: Preprocessing dan PipelineBangun pipeline pembersihan dan scaling yang aman dari data leakage.
Buka → # Bagian 3: Pelatihan dan Optimasi ModelBandingkan beberapa model regresi dan setel hyperparameter terbaiknya.
Buka → # Bagian 4: Evaluasi dan LaporanEvaluasi model final pada data uji dan susun laporan analisis yang dapat dibaca pemangku kepentingan.
Buka →