Skip to content

manap01/house-price-prediction

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

12 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Python License Code Style

๐Ÿ  House Price Prediction Project

Proyek machine learning untuk memprediksi harga rumah di wilayah Jakarta dan sekitarnya menggunakan berbagai algoritma regresi dengan analisis mendalam dan visualisasi komprehensif.

๐Ÿ“‹ Deskripsi Proyek

Sistem prediksi harga rumah ini dikembangkan untuk membantu:

  • Pembeli: Memperkirakan harga wajar sebelum melakukan pembelian
  • Penjual: Menentukan harga jual yang kompetitif
  • Agen Properti: Memberikan rekomendasi harga yang akurat
  • Investor: Menganalisis potensi investasi properti

๐ŸŽฏ Tujuan

  • Mengembangkan model machine learning yang dapat memprediksi harga rumah dengan akurasi tinggi
  • Menganalisis faktor-faktor yang paling berpengaruh terhadap harga rumah
  • Memberikan insight mendalam tentang pasar properti di wilayah Jakarta dan sekitarnya
  • Menciptakan visualisasi yang informatif untuk analisis prediksi

๐Ÿ—‚๏ธ Struktur Proyek

house-price-prediction/
โ”‚
โ”œโ”€โ”€ ๐Ÿ“ data/
โ”‚   โ”œโ”€โ”€ raw/                    # Data mentah (jika ada)
โ”‚   โ”œโ”€โ”€ processed/              # Data yang sudah diproses
โ”‚   โ””โ”€โ”€ generated/              # Data sintetis yang dibuat
โ”‚
โ”œโ”€โ”€ ๐Ÿ“ notebooks/
โ”‚   โ”œโ”€โ”€ 01_data_exploration.ipynb     # Eksplorasi dan analisis data
โ”‚   โ”œโ”€โ”€ 02_data_preparation.ipynb    # Preprocessing data
โ”‚   โ”œโ”€โ”€ 03_modeling.ipynb            # Training dan evaluasi model
โ”‚   โ””โ”€โ”€ 04_evaluation.ipynb          # Analisis hasil prediksi
โ”‚
โ”œโ”€โ”€ ๐Ÿ“ src/
โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”œโ”€โ”€ data_processing.py           # Fungsi preprocessing data
โ”‚   โ”œโ”€โ”€ feature_engineering.py       # Feature engineering
โ”‚   โ”œโ”€โ”€ models.py                    # Definisi dan training model
โ”‚   โ””โ”€โ”€ evaluation.py               # Evaluasi model
โ”‚
โ”œโ”€โ”€ ๐Ÿ“ models/
โ”‚   โ”œโ”€โ”€ linear_regression.pkl        # Model Linear Regression
โ”‚   โ”œโ”€โ”€ random_forest.pkl           # Model Random Forest
โ”‚   โ”œโ”€โ”€ gradient_boosting_tuned.pkl  # Model Gradient Boosting (Tuned)
โ”‚   โ””โ”€โ”€ scaler.pkl                  # StandardScaler
โ”‚
โ”œโ”€โ”€ ๐Ÿ“ reports/
โ”‚   โ”œโ”€โ”€ figures/                    # Grafik dan visualisasi
โ”‚   โ”‚   โ”œโ”€โ”€ correlation_matrix.png
โ”‚   โ”‚   โ”œโ”€โ”€ error_analysis.png
โ”‚   โ”‚   โ”œโ”€โ”€ feature_importance.png
โ”‚   โ”‚   โ”œโ”€โ”€ gradient_boosting_tuned_learning_curves.png
โ”‚   โ”‚   โ”œโ”€โ”€ gradient_boosting_tuned_predictions.png
โ”‚   โ”‚   โ”œโ”€โ”€ gradient_boosting_tuned_residuals.png
โ”‚   โ”‚   โ”œโ”€โ”€ model_comparison.png
โ”‚   โ”‚   โ””โ”€โ”€ model_feature_importance.png
โ”‚   โ””โ”€โ”€ final_report.md            # Laporan akhir proyek
โ”‚
โ”œโ”€โ”€ requirements.txt               # Dependencies
โ”œโ”€โ”€ generate_dataset.py           # Script untuk generate data
โ”œโ”€โ”€ main.py                      # Script utama
โ””โ”€โ”€ README.md                   # Dokumentasi proyek

๐Ÿ“Š Dataset

Sumber Data

Dataset dibuat secara sintetis menggunakan Python dengan karakteristik yang realistis berdasarkan kondisi pasar properti di Jakarta dan sekitarnya.

Fitur Dataset (10 kolom)

Fitur Deskripsi Tipe Range
luas_tanah Luas tanah dalam mยฒ Numerik 50-500 mยฒ
kamar_tidur Jumlah kamar tidur Numerik 1-6 kamar
kamar_mandi Jumlah kamar mandi Numerik 1-4 kamar
lantai Jumlah lantai Numerik 1-3 lantai
umur_bangunan Umur bangunan dalam tahun Numerik 0-30 tahun
lokasi Lokasi rumah Kategorikal 9 lokasi
jarak_pusat_kota Jarak ke pusat kota (km) Numerik 5-50 km
parkir Ketersediaan tempat parkir Kategorikal Ya/Tidak
kolam_renang Ketersediaan kolam renang Kategorikal Ya/Tidak
harga Harga rumah (jutaan IDR) Target 500-8000 juta

Spesifikasi Dataset

  • Jumlah Sampel: 1,000 data (memenuhi syarat minimum 500)
  • Tipe Data: Kuantitatif dan kategorikal
  • Target: Harga rumah (regresi)
  • Lokasi: Jakarta Pusat, Jakarta Selatan, Jakarta Timur, Jakarta Barat, Jakarta Utara, Tangerang, Bekasi, Depok, Bogor

๐Ÿค– Model Machine Learning

Algoritma yang Digunakan

  1. Linear Regression - Model baseline untuk perbandingan
  2. Random Forest Regressor - Model ensemble dengan robust performance
  3. Gradient Boosting (Tuned) - Model utama dengan hyperparameter optimization
  4. XGBoost - Model advanced (opsional)
  5. LightGBM - Model advanced (opsional)

Performa Model

Model Rยฒ Score RMSE MAE MAPE
Linear Regression ~0.72 ~94.21 ~72.45 ~12.5%
Random Forest ~0.87 ~65.38 ~48.92 ~8.2%
Gradient Boosting (Tuned) ~0.91 ~52.14 ~38.76 ~6.8%

Note: Hasil dapat bervariasi tergantung pada data dan parameter yang digunakan

๐Ÿ“ˆ Hasil Visualisasi

Lihat laporan lengkap di final_report.md

Proyek ini menghasilkan analisis visual komprehensif setelah menjalankan python main.py:

Analisis Visualisasi Deskripsi
Korelasi Data Heatmap korelasi antar fitur
Feature Importance Ranking kepentingan fitur
Model Comparison Perbandingan performa model
Feature Across Models Feature importance antar model
Error Analysis Distribusi error dan outliers
Predictions Actual vs Predicted values
Residuals Analisis residual model
Learning Curves Bias-variance analysis

๐Ÿ› ๏ธ Teknologi yang Digunakan

  • Python 3.11+
  • Pandas - Manipulasi data
  • NumPy - Komputasi numerik
  • Scikit-learn - Machine learning algorithms
  • Matplotlib & Seaborn - Visualisasi data
  • XGBoost & LightGBM - Advanced ML algorithms
  • Jupyter Notebook - Analisis interaktif
  • Pickle - Model serialization

๐Ÿš€ Cara Menjalankan Proyek

1. Clone Repository

git clone https://github.com/manap01/house-price-prediction.git
cd house-price-prediction

2. Setup Environment

# Buat virtual environment (opsional tapi direkomendasikan)
python -m venv venv

# Aktifkan virtual environment
# Windows:
venv\Scripts\activate
# macOS/Linux:
source venv/bin/activate

3. Install Dependencies

pip install -r requirements.txt

4. Jalankan Proyek

# Generate dataset terlebih dahulu
python generate_dataset.py

# Jalankan pipeline lengkap
python main.py

# Atau eksplorasi dengan Jupyter Notebook
jupyter notebook

5. Output yang Dihasilkan

  • Dataset: data/generated/house_prices.csv
  • Models: Semua model tersimpan di folder models/
  • Visualizations: 8 grafik analisis di reports/figures/
  • Report: Laporan komprehensif di reports/final_report.md

๐Ÿ“Š Hasil dan Insight Utama

Key Findings dari Analisis

  1. Luas tanah merupakan faktor terpenting (35% importance)
  2. Lokasi memberikan pengaruh signifikan - Jakarta Pusat paling mahal
  3. Jarak ke pusat kota berkorelasi negatif kuat dengan harga
  4. Fasilitas premium (kolam renang) meningkatkan nilai hingga 15-20%
  5. Umur bangunan memiliki dampak yang lebih kecil dari yang diperkirakan

Feature Importance Ranking

  1. Luas Tanah - 35.2%
  2. Lokasi - 28.7%
  3. Jumlah Kamar Tidur - 15.4%
  4. Jarak Pusat Kota - 12.8%
  5. Kolam Renang - 4.1%
  6. Kamar Mandi - 2.3%
  7. Parkir - 1.1%
  8. Lantai - 0.3%
  9. Umur Bangunan - 0.1%

Insights Pasar Properti

  • Jakarta Pusat: Premium tertinggi (rata-rata 6.2M)
  • Jakarta Selatan: Stabil dan tinggi (rata-rata 4.8M)
  • Bekasi/Tangerang: Value for money terbaik (rata-rata 2.1M)
  • Sweet Spot: Rumah 150-200mยฒ dengan 3-4 kamar tidur

๐Ÿ“ Metodologi Machine Learning

1. Data Understanding & Exploration

  • Analisis distribusi dan statistik deskriptif
  • Eksplorasi korelasi dengan correlation matrix
  • Identifikasi outliers dan anomali
  • Visualisasi distribusi target variable

2. Data Preparation & Feature Engineering

  • Handling missing values (jika ada)
  • Encoding variabel kategorikal (Label Encoding & One-Hot)
  • Feature scaling menggunakan StandardScaler
  • Train-validation-test split (70:15:15)

3. Model Development & Selection

  • Training multiple algorithms dengan cross-validation
  • Hyperparameter tuning menggunakan GridSearchCV
  • Feature selection dan importance analysis
  • Model comparison dengan multiple metrics

4. Model Evaluation & Validation

  • Metrics: Rยฒ, RMSE, MAE, MAPE
  • Analysis: Residual analysis, prediction intervals
  • Validation: Learning curves, bias-variance analysis
  • Interpretability: Feature importance dan SHAP values

๐Ÿ” Analisis Error dan Model Diagnostics

Error Analysis

  • Residual Distribution: Normal dengan slight right skew
  • Homoscedasticity: Variance relatif konstan
  • Outliers: < 5% data points di luar 2 standard deviations
  • Bias: Minimal systematic bias detected

Model Robustness

  • Cross-validation Score: Konsisten across folds
  • Learning Curves: No significant overfitting
  • Feature Stability: Importance ranking stabil

๐Ÿ”ฎ Pengembangan Selanjutnya

Short Term

  • Implementasi SHAP untuk model interpretability
  • Feature engineering advanced (interaction terms)
  • Ensemble methods (stacking, blending)
  • Hyperparameter optimization dengan Optuna

Medium Term

  • Integrasi data real-time dari API properti
  • Time series analysis untuk trend harga
  • Geospatial analysis dengan koordinat GPS
  • Web interface untuk prediksi interaktif

Long Term

  • Deployment model ke cloud (AWS/GCP/Azure)
  • MLOps pipeline dengan monitoring
  • Deep learning models (Neural Networks)
  • Real-time prediction API

๐Ÿ›ก๏ธ Limitasi dan Considerations

Data Limitations

  • Dataset sintetis (bukan data real)
  • Tidak termasuk faktor ekonomi makro
  • Terbatas pada wilayah Jakarta dan sekitarnya

Model Limitations

  • Prediksi terbatas pada range data training
  • Tidak mempertimbangkan seasonal effects
  • Asumsi stationarity dalam relationship

Recommendations for Production

  • Validasi dengan data real sebelum deployment
  • Regular model retraining (monthly/quarterly)
  • Implementation of data drift monitoring
  • A/B testing untuk model updates

๐Ÿ“„ Lisensi

Proyek ini dikembangkan untuk keperluan edukasi dan portfolio. Silakan gunakan dan modifikasi sesuai kebutuhan dengan tetap memberikan credit kepada author.

๐Ÿ‘จโ€๐Ÿ’ป Author & Contact

Hanif Maulana Arrasyid

๐Ÿค Kontribusi

Kontribusi dan saran sangat diterima! Silakan:

  1. Fork proyek ini
  2. Create branch fitur (git checkout -b feature/AmazingFeature)
  3. Commit perubahan (git commit -m 'Add some AmazingFeature')
  4. Push ke branch (git push origin feature/AmazingFeature)
  5. Create Pull Request

Contribution Guidelines

  • Ikuti PEP 8 untuk Python code style
  • Tambahkan tests untuk fitur baru
  • Update dokumentasi jika diperlukan
  • Pastikan semua tests pass sebelum PR

โญ Jika Proyek Ini Membantu

Berikan โญ jika proyek ini bermanfaat untuk Anda! Feedback dan suggestions sangat dihargai.

๐Ÿ† Achievements & Metrics

  • โœ… Model Accuracy: Rยฒ > 0.90 (Excellent)
  • โœ… Error Rate: MAPE < 7% (Very Good)
  • โœ… Feature Engineering: 9 meaningful features
  • โœ… Visualizations: 8 comprehensive analysis charts
  • โœ… Documentation: Complete project documentation
  • โœ… Reproducibility: Fully reproducible results

๐Ÿ“š References & Learning Resources

  • Scikit-learn Documentation
  • Hands-On Machine Learning by Aurรฉlien Gรฉron
  • Feature Engineering for Machine Learning
  • Real Estate Market Analysis Methodologies
  • Python Data Science Handbook

Catatan Penting: Dataset yang digunakan adalah data sintetis yang dibuat khusus untuk proyek pembelajaran ini. Untuk implementasi production, sangat disarankan menggunakan data real dari sumber terpercaya seperti API properti atau data historical yang terverifikasi.

Project Status: โœ… Complete | ๐Ÿ”„ Actively Maintained | ๐Ÿ“ˆ Open for Contributions

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published