NaijaEstateAI is an ML-powered real estate platform for Nigeria that improves pricing accuracy and transparency. It cleans and engineers features from property listings, trains Linear Regression, Random Forest, and XGBoost, evaluates with CV/metrics, and serves the best model through a Streamlit app and FastAPI.
# NaijaEstateAI
Machine Learning–driven Real Estate Management System focused on the Nigerian property market (starting with Lagos rent data). The goal is to improve transparency and pricing accuracy by:
* Cleaning and structuring fragmented listing data
* Predicting likely annual rent (₦) from property attributes
* Laying foundations for recommendation, trend analysis & geospatial insights
## Features (Current)
* Training script (`train.py`) trains Linear Regression, RandomForest, optionally XGBoost and auto-selects the best (RMSE)
* Persisted best model (`models/best_model.joblib`) + metrics JSON (`artifacts/metrics.json`)
* Streamlit app (`streamlit_app.py`) for interactive rent prediction
* Config centralization (`config.py`) keeping features & paths consistent
* Basic test (`tests/test_training.py`) to ensure training produces artifacts
## Roadmap (Planned)
1. Property recommendation engine (content + hybrid)
2. Market trend time-series module (price evolution by location)
3. Geospatial enrichment (lat/long, distance to POIs, clustering)
4. Explainability (SHAP values, feature importance visualization)
5. Data versioning & experiment tracking (DVC / MLflow)
6. Scheduled retraining workflow (GitHub Actions cron)
7. Deployment (Streamlit Cloud / Render) + API endpoints
8. Drift monitoring & simple analytics dashboard
## Setup
Install dependencies (ideally in a virtual environment):
```bash
pip install -r requirements.txt
```
## Train Models
```bash
python train.py --data lagos-rent.csv --test-size 0.2 --skip-xgb # skip-xgb if environment lacks xgboost
```
Artifacts:
* `models/best_model.joblib`
* `artifacts/metrics.json`
## Run Streamlit App
```bash
streamlit run streamlit_app.py
```
## Run FastAPI Service (basic web API)
```bash
uvicorn api_app:app --reload --port 8000
```
Then test:
```bash
curl -X POST
127.0.0.1 \
-H 'Content-Type: application/json' \
-d '{
"bedrooms":3,
"bathrooms":3,
"toilets":4,
"Serviced":1,
"Newly_Bui …