Project ini nyoba ngebandingin tiga model regression yang sama-sama dari keluarga Linear Regression, tapi beda gaya dalam “mengatur koefisien” biar gak overfitting:
- 🧘 Ridge Regression → ngecilin koefisien, tapi gak hapus fitur.
- ✂️ Lasso Regression → bisa hapus fitur yang dianggap gak penting.
- ⚖️ Elastic Net Regression → kombinasi dua gaya di atas (lebih fleksibel).
Dataset yang dipakai: California Housing Dataset — berisi 20.640 data wilayah di California lengkap sama fitur-fitur seperti MedInc, HouseAge, AveRooms, AveOccup, Latitude, dan Longitude.
Ngebandingin performa ketiga model regression dalam menebak harga median rumah (MedHouseVal) berdasarkan fitur lingkungan dan sosial ekonomi.
| Kolom | Keterangan |
|---|---|
MedInc |
Pendapatan rata-rata per blok (x10,000 USD) |
HouseAge |
Umur rata-rata rumah di area itu |
AveRooms |
Jumlah rata-rata kamar per rumah |
AveBedrms |
Jumlah rata-rata kamar tidur |
Population |
Total penduduk |
AveOccup |
Rata-rata penghuni per rumah |
Latitude |
Garis lintang |
Longitude |
Garis bujur |
MedHouseVal |
Harga median rumah (target) |
Pake fetch_california_housing dari sklearn.datasets.
Data otomatis keambil langsung dari library scikit-learn.
X = df.drop('MedHouseVal', axis=1) # fitur
y = df['MedHouseVal'] # target (harga rumah)axis=1 artinya kita hapus kolom target dari kolom horizontal (kolom, bukan baris).
Pake train_test_split() biar AI bisa belajar dari 80% data dan diuji di 20% sisanya.
Biar tiap fitur punya skala seimbang (ngindarin dominasi fitur gede kayak pendapatan).
ridge_model = Ridge(alpha=1.0)
lasso_model = Lasso(alpha=0.1)
elastic_model = ElasticNet(alpha=0.1, l1_ratio=0.5)alpha= seberapa keras “hukuman” buat koefisien besar.l1_ratio(khusus ElasticNet) = seimbangin antara gaya Lasso (L1) dan Ridge (L2).
Gunain dua metrik:
- MSE (Mean Squared Error) → seberapa jauh prediksi dari nilai asli.
- R² Score → seberapa kuat model ngejelasin variabel target.
Dibikin grafik batang buat ngebandingin nilai MSE dan R² semua model biar lebih mudah liat siapa jagonya.
| Model | MSE ↓ | R² ↑ | Catatan |
|---|---|---|---|
| Ridge | Paling stabil | Tinggi | Cocok buat data multikolinearitas |
| Lasso | Sedikit lebih tinggi | Turun dikit | Cocok buat seleksi fitur |
| Elastic Net | Seimbang | Konsisten | Kombinasi terbaik overall |
-
Clone atau download repo ini.
git clone https://github.com/rifaldomalau/California-Housing-Dataset.git cd California-Housing-Dataset -
Install dependencies:
pip install -r requirements.txt
-
Jalankan notebook:
jupyter notebook California-Housing-Dataset.ipynb
-
Baca setiap cell karena semua code udah dikasih komentar penjelasan lengkap 👀
- Model bisa di-tuning lagi dengan grid search biar hasilnya makin optimal.
- Ridge cocok kalau semua fitur relevan.
- Lasso bagus buat “nyaring” fitur.
- Elastic Net aman buat kombinasi keduanya.
📌 Project by: Hot Malau 📅 Tema: Supervised Learning – Regression (Regularized Linear Models) 🚀 Tools: Python + Scikit-learn + Matplotlib + Seaborn + Pandas