Système intelligent de géolocalisation indoor utilisant les signaux RSSI et des techniques avancées de machine learning
Ce projet implémente un système de géolocalisation indoor de pointe qui prédit avec précision la position d'objets ou de personnes dans des environnements fermés en analysant les signaux RSSI (Received Signal Strength Indicator) de multiples capteurs.
- Prédiction précise : Estimation des coordonnées (X, Y) avec une erreur minimale
- Comparaison de modèles : Évaluation de 3 approches ML différentes
- Interface interactive : Dashboard web pour visualisation et prédiction en temps réel
- Reproductibilité : Code structuré avec tests et documentation complète
- Scalabilité : Architecture modulaire pour extension facile
✅ Architecture modulaire avec séparation des responsabilités
✅ Pipeline ML complet : preprocessing → training → evaluation → deployment
✅ Tests unitaires pour assurer la qualité du code
✅ Configuration centralisée pour une gestion facile des paramètres
✅ Visualisations interactives avec Plotly et Dash
✅ Documentation technique détaillée
Géolocalisation-Cartes-RSSI/
├── 📁 src/ # Code source principal
│ ├── data_preprocessing.py # Traitement des données RSSI
│ ├── models.py # Modèles ML (RF, XGBoost, DNN)
│ ├── visualization.py # Graphiques et rapports
│ └── dashboard.py # Interface web interactive
├── 📁 data/ # Données RSSI brutes
├── 📁 tests/ # Tests unitaires
├── 📁 models/ # Modèles sauvegardés
├── 📁 reports/ # Rapports générés
├── 📁 logs/ # Fichiers de log
├── main.py # Script principal
├── config.py # Configuration globale
└── requirements.txt # Dépendances
| Modèle | Description | Avantages |
|---|---|---|
| Random Forest | Ensemble de trees de décision | Robuste, interprétable, gestion des outliers |
| XGBoost | Gradient boosting optimisé | Performance élevée, gestion des données manquantes |
| Deep Neural Network | Réseau de neurones profond | Capacité d'apprentissage complexe, non-linéarités |
- R² Score : Coefficient de détermination
- MAE : Mean Absolute Error
- MSE : Mean Squared Error
- RMSE : Root Mean Squared Error
- Erreur euclidienne : Distance géométrique réelle
- Python 3.8+
- pip ou conda
- 8GB RAM recommandés
# Cloner le repository
git clone https://github.com/soboure69/Geolocalisation-Cartes-RSSI.git
cd Geolocalisation-Cartes-RSSI
# Créer un environnement virtuel
python -m venv .venv
source .venv/bin/activate # Linux/Mac
# ou
.venv\Scripts\activate # Windows
# Installer les dépendances
pip install -r requirements.txt# Lancer l'entraînement complet + dashboard
python main.py# Entraînement seulement
python main.py --skip-dashboard
# Dashboard seulement (modèles pré-entraînés)
python main.py --dashboard-only
# Port personnalisé
python main.py --port 8080
# Chemin de données personnalisé
python main.py --data-path /path/to/your/dataAprès lancement, accédez au dashboard : http://127.0.0.1:8050
- Distribution des signaux RSSI par capteur
- Matrices de corrélation
- Détection des valeurs aberrantes
- Statistiques descriptives complètes
- Interface intuitive pour saisie des valeurs RSSI
- Prédiction instantanée de position
- Visualisation sur carte interactive
- Historique des prédictions
- Comparaison des performances des modèles
- Cartes de chaleur des erreurs de géolocalisation
- Scatter plots prédictions vs réalité
- Graphiques d'importance des features
- Génération de rapports HTML complets
- Export des métriques en CSV
- Sauvegarde automatique des résultats
- Horodatage des expériences
# Lancer les tests unitaires
pytest tests/ -v
# Avec couverture de code
pytest tests/ --cov=src --cov-report=html
# Linting du code
flake8 src/
black src/ --checkLe fichier config.py centralise tous les paramètres :
# Exemple de configuration personnalisée
from config import ProjectConfig
config = ProjectConfig()
config.models.rf_n_estimators = 200 # Plus d'arbres
config.models.dnn_epochs = 150 # Plus d'époques
config.visualization.dashboard_port = 8080 # Port personnalisé- R² Score : 0.85-0.95 (selon la qualité des données)
- Erreur euclidienne moyenne : 2-5 mètres
- Temps d'entraînement : 2-10 minutes (selon le hardware)
- Navigation indoor dans centres commerciaux
- Tracking d'assets en entrepôts
- Systèmes de sécurité et contrôle d'accès
- Applications IoT et smart buildings
- Hyperparameter tuning automatique avec Optuna
- MLOps pipeline avec MLflow
- Modèles ensemble avancés
- API REST pour intégration
- Support multi-étages (3D)
- Algorithmes de filtrage (Kalman, particules)
Les contributions sont les bienvenues ! Voir CONTRIBUTING.md pour les guidelines.
# Setup développement
pip install -e .
pip install -r requirements-dev.txt
# Pre-commit hooks
pre-commit install- Guide d'architecture : Détails techniques
- API Reference : Documentation des modules
- Tutoriels : Guides pas-à-pas
- FAQ : Questions fréquentes
Ce projet est sous licence MIT. Voir LICENSE pour plus de détails.
Projet de démonstration - Portfolio Data Science
- 🔗 LinkedIn : https://www.linkedin.com/in/sobourebello/
- 📧 Email : [email protected]
- 🌐 Portfolio : https://github.com/soboure69
- Équipe de recherche en géolocalisation indoor
- Communauté open-source Python
- Contributeurs et testeurs