Logo Lanfrica

Honorine720/rentiq-rwanda

Domaine:

socioeconomic

Type de record:

softwaremodel
Créateur:
Hon
HĂ´te:
house rent prediction app # RentIQ Rwanda 🇷🇼 AI-Powered House Rent Price Prediction for Rwanda with focus on Nyamasheke District. ## 🌟 Features - **Accurate Predictions**: XGBoost model trained on Rwanda housing data - **Explainable AI**: SHAP values show what influences each prediction - **Rwanda-Specific**: Districts, sectors, materials calibrated for Rwanda - **Dual Currency**: Results in both RWF and USD - **Prediction History**: Track all predictions with export capability - **Beautiful UI**: Brutalist design with Rwanda flag colors ## 🏗️ Tech Stack ### Backend - Python 3.11 - FastAPI (REST API) - XGBoost (ML Model) - SHAP (Explainability) - SQLAlchemy (Database) - Scikit-learn (Preprocessing) ### Frontend - React 18 - Vite (Build Tool) - TailwindCSS (Styling) - React Router (Navigation) - Axios (HTTP Client) ## 📋 Prerequisites - Python 3.11+ - Node.js 18+ and npm - Git ## 🚀 Quick Start ### 1. Clone the Repository ```bash git clone cd rentiq-rwanda ``` ### 2. Backend Setup ```bash cd backend # Create virtual environment python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate # Install dependencies pip install -r requirements.txt # Train the ML model python -m app.ml.train # Start the API server uvicorn app.main:app --reload --host 0.0.0.0 --port 8000 ``` The API will be available at `localhost` API Documentation: `localhost` ### 3. Frontend Setup ```bash cd frontend # Install dependencies npm install # Start development server npm run dev ``` The app will be available at `localhost` ## 📊 Model Training The model training pipeline: 1. **Generates synthetic Rwanda housing data** (or uses existing data) 2. **Trains 3 models**: Linear Regression, Random Forest, XGBoost 3. **Compares performance** using cross-validation 4. **Saves the best model** with metadata To retrain the model: ```bash cd backend python -m app.ml.train ``` To evaluate the model: ```bash python -m app.ml.evaluate ``` ## …