Une plateforme full-stack de machine learning automatisé avec recommandations intelligentes, analyse de données et génération de rapports académiques.
DataNova est une plateforme intégrée de science des données conçue pour démocratiser l'apprentissage automatique. Elle assiste autant les data scientists expérimentés que les non-experts dans la sélection, la configuration et l'exécution d'algorithmes de machine learning — de l'importation des données jusqu'à la génération de rapports académiques.
La plateforme est destinée aux :
- Data Scientists cherchant à accélérer leurs workflows d'expérimentation
- Chercheurs académiques ayant besoin de rapports structurés et reproductibles
- Étudiants en data science souhaitant apprendre le ML par la pratique
- Analystes métier voulant exploiter le ML sans expertise approfondie
L'apprentissage automatique est devenu incontournable, mais sa mise en œuvre reste complexe :
| Défi | Impact |
|---|---|
| Sélection d'algorithmes | Des centaines d'algorithmes disponibles — choisir le bon nécessite des années d'expertise |
| Preprocessing laborieux | 60-80% du temps d'un projet ML est consacré au nettoyage et à la transformation des données |
| Reproductibilité | Sans traçabilité, impossible de reproduire ou comparer les expériences |
| Communication des résultats | La rédaction de rapports techniques est chronophage et sujette aux erreurs |
| Courbe d'apprentissage | Les outils existants (AutoML) fonctionnent comme des boîtes noires, sans explications |
Les solutions AutoML traditionnelles (Google AutoML, H2O.ai, Auto-sklearn) utilisent une recherche exhaustive coûteuse en calcul, sans expliquer leurs recommandations, et sans générer de documentation.
DataNova transforme le pipeline ML traditionnel en un flux guidé et intelligent :
| Avant DataNova | Après DataNova |
|---|---|
| ❌ Sélection manuelle par essai-erreur | ✅ Recommandations basées sur l'analyse du dataset |
| ❌ Preprocessing codé à la main | ✅ Pipeline builder visuel glisser-déposer |
| ❌ Aucune traçabilité | ✅ Journalisation complète de toutes les actions |
| ❌ Rapports rédigés manuellement | ✅ Rapports PDF automatiques enrichis par IA (LLM) |
| ❌ Boîte noire | ✅ Explications détaillées pour chaque recommandation |
Bénéfices mesurables :
- ⏱️ Réduction de 70% du temps de preprocessing
- 🎯 Recommandations algorithmiques avec 7 critères de scoring (interprétabilité, vitesse, scalabilité, robustesse, etc.)
- 📄 Génération de rapports en quelques secondes (vs. heures manuellement)
- 🔄 Feedback utilisateur intégré pour amélioration continue du moteur de recommandation
- Inscription/connexion avec JWT (access + refresh tokens)
- Gestion des rôles (utilisateur standard / super-utilisateur)
- Protection des ressources par propriétaire
- Upload de fichiers CSV avec extraction automatique de schéma
- Visualisation interactive : histogrammes, scatter plots, heatmaps, PCA, t-SNE
- Analyse des valeurs manquantes, boxplots, distribution catégorielle
- Prévisualisation paginée des données
- Création de pipelines de preprocessing par glisser-déposer
- Opérations : drop colonnes, fill missing values, one-hot encoding, scaling
- Prévisualisation en temps réel sur échantillon
- Application complète sur le dataset
- 17 algorithmes : Régression (7), Classification (6), Clustering (4)
- Configuration dynamique des hyperparamètres via schémas JSON
- Entraînement asynchrone en arrière-plan (BackgroundTasks)
- Split train/test configurable (méthode, ratio, shuffle, stratification)
- Métriques automatiques : accuracy, precision, recall, F1, MSE, R², silhouette
- Export des modèles entraînés (joblib)
- Rapports académiques complets avec sections structurées
- Graphiques intégrés (Matplotlib/Seaborn)
- Sections : analyse dataset, pipeline preprocessing, configuration, résultats
- Prédiction unitaire et par lot sur modèles entraînés
- Cache des modèles en mémoire pour performance
- Historique complet des prédictions
- Journalisation de toutes les actions utilisateur
- Filtrage par type, ressource, date
- Dashboard d'activité pour super-utilisateurs
L'innovation phare de DataNova. Contrairement aux AutoML boîtes noires, notre moteur :
- Analyse automatiquement les caractéristiques du dataset (profiling statistique)
- Classifie le type de problème : classification binaire, multiclasse, ou régression
- Score chaque algorithme sur 7 critères pondérés :
- 🧩 Interprétabilité du modèle
- ⚡ Vitesse d'entraînement
- 📈 Scalabilité (grands datasets)
- 🛡️ Robustesse au bruit et outliers
- 🎯 Performance sur données éparses
- 🔢 Gestion des données catégorielles
- 🧠 Capacité à capturer des relations non-linéaires
- Explique chaque recommandation avec des raisons détaillées
- Apprend des feedbacks utilisateurs pour améliorer les suggestions futures
Dataset → DatasetAnalyzer → ProblemClassifier → RecommendationEngine → Top-5 Algorithmes
↑
User Feedback Loop
Les rapports PDF sont enrichis par l'API Groq (Mixtral/Llama) qui génère :
- Des insights contextuels sur les résultats
- Des interprétations des métriques de performance
- Des recommandations d'amélioration
- Des comparaisons entre algorithmes testés
17 adaptateurs scikit-learn organisés en registre modulaire — ajouter un nouvel algorithme se fait en implémentant une seule classe.
Les tâches d'entraînement longues sont déléguées à des BackgroundTasks avec exécution dans un ThreadPoolExecutor, libérant l'API pour d'autres requêtes.
- PCA et t-SNE pour la réduction de dimension interactive
- Matrices de corrélation (heatmaps)
- Courbes d'apprentissage (learning curves)
- Graphiques D3.js interactifs côté frontend
| Couche | Technologie | Version | Rôle |
|---|---|---|---|
| Backend Framework | FastAPI (async) | 0.115+ | API RESTful |
| ORM | SQLAlchemy | 2.0+ | Accès base de données asynchrone |
| Base de données | PostgreSQL 16 + TimescaleDB | 16 | Stockage principal |
| ML Engine | scikit-learn, pandas, numpy | 1.5+ | 17 algorithmes + preprocessing |
| LLM | Groq API (Mixtral/Llama) | — | Enrichissement IA des rapports |
| ReportLab | 4.0+ | Génération de rapports | |
| Visualisation | Matplotlib, Seaborn | 3.9+ | Graphiques serveur |
| Frontend | SvelteKit 5 | 5.0+ | Interface utilisateur |
| UI | Tailwind CSS, Bits-UI, Lucide | 4.1+ | Composants et icônes |
| Graphiques | LayerChart, D3.js | — | Visualisations interactives |
| Auth | fastapi-users + JWT | 14+ | Authentification |
| Migrations | Alembic | 1.14+ | Schéma base de données |
| Conteneurisation | Docker Compose | — | Infrastructure |
| Bac à sable | Streamlit | 1.40+ | Simulation ML interactive |
| Tests E2E | Playwright | — | Tests frontend |
Utilisateur
│
▼
┌─────────────┐ ┌──────────────┐ ┌───────────────┐ ┌──────────────┐
│ Upload CSV │────▶│ Data Hub │────▶│ Pipeline │────▶│ Entraînement │
│ (Data Hub) │ │ Analyse + │ │ Builder │ │ ML + Métriques│
│ │ │ Visualisat° │ │ (Lab) │ │ │
└─────────────┘ └──────────────┘ └───────────────┘ └──────┬───────┘
│
┌────────────────────────────────────────┤
▼ ▼
┌──────────────┐ ┌──────────────┐
│ Rapports │ │ Prédictions │
│ PDF + LLM │ │ (Batch + │
│ (Groq) │ │ Unitaire) │
└──────────────┘ └──────────────┘
┌─────────────────────────────────────────────────────────┐
│ COUCHE PRÉSENTATION │
│ SvelteKit 5 + Tailwind CSS + LayerChart/D3.js │
│ 14 pages, 20+ composants UI réutilisables │
├─────────────────────────────────────────────────────────┤
│ COUCHE APPLICATIVE │
│ FastAPI (Python 3.10+) — 11 routeurs REST │
│ ┌──────────┐ ┌───────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Auth JWT │ │ ML Engine │ │ Reports │ │ Activity │ │
│ │ │ │ 17 adapt. │ │ PDF+Groq │ │ Tracking │ │
│ └──────────┘ └───────────┘ └──────────┘ └──────────┘ │
│ 14 services métier — 8 modèles ORM — 50+ endpoints │
├─────────────────────────────────────────────────────────┤
│ COUCHE PERSISTANCE │
│ PostgreSQL 16 (TimescaleDB) + SQLAlchemy 2.0 (async) │
│ 12 tables relationnelles + migrations Alembic │
└─────────────────────────────────────────────────────────┘
DataNova/
├── datanova-backend/ # API FastAPI + ML Engine
│ ├── app/
│ │ ├── api/routes/ # 11 routeurs REST
│ │ ├── models/ # 8 modèles SQLAlchemy
│ │ ├── schemas/ # Schémas Pydantic
│ │ ├── services/ # 14 services métier
│ │ ├── ml/ # Moteur ML + Recommandation
│ │ │ ├── adapters/ # 17 adaptateurs scikit-learn
│ │ │ ├── recommendation_engine.py
│ │ │ ├── dataset_analyzer.py
│ │ │ └── problem_classifier.py
│ │ ├── core/ # Authentification JWT
│ │ ├── db/ # Session async PostgreSQL
│ │ └── middleware/ # Logging HTTP
│ ├── alembic/ # Migrations BD
│ ├── tests/ # Tests unitaires
│ └── uploads/ # Stockage CSV
│
├── datanova-web/ # Frontend Svelte 5
│ ├── src/
│ │ ├── routes/ # 14 pages
│ │ ├── lib/components/ # 20+ composants UI
│ │ └── lib/services/ # Clients API TypeScript
│ └── e2e/ # Tests Playwright
│
├── datanova-infra/ # Infrastructure Docker
│ └── docker-compose.yaml # PostgreSQL 16 + pgAdmin
│
├── datanova-simulation-streamlit/ # Bac à sable ML
│ ├── models/ # Régression, Classification, Clustering
│ └── preprocessing/ # Pipeline preprocessing
│
├── datanova-docs/ # Documentation (ce dépôt)
│ ├── README.md
│ ├── TECHNICAL_ARCHITECTURE.md
│ ├── API_SPECIFICATIONS.md
│ ├── USER_MANUAL.md
│ ├── DATA_DICTIONARY.md
│ ├── DEPLOYMENT_GUIDE.md
│ ├── ACADEMIC_REPORT.md
│ └── screenshots/ # 15 captures d'écran
│
└── datasets/ # Jeux de données externes
| Défi | Solution Apportée |
|---|---|
| 17 algorithmes, 17 interfaces différentes | Pattern Adaptateur : chaque algorithme implémente une interface commune (fit, predict, get_params, set_params) |
| Tâches ML bloquant l'API | BackgroundTasks FastAPI avec ThreadPoolExecutor — l'API répond immédiatement, l'entraînement s'exécute en arrière-plan |
| Recommandations sans boîte noire | Base de connaissances expertes avec 7 critères pondérés et explications lisibles par l'humain |
| Preprocessing visuel temps réel | Prévisualisation sur un échantillon de 10 lignes avant application complète |
| Génération de rapports intelligents | Templates ReportLab structurés + appels API Groq pour enrichissement contextuel |
| Jointures complexes pour l'activité | Requêtes SQLAlchemy optimisées avec chargement eager des relations |
- FastAPI plutôt que Django : Performance asynchrone native, validation Pydantic automatique, documentation OpenAPI générée
- Svelte 5 plutôt que React : Réactivité fine sans Virtual DOM, bundle plus léger, courbe d'apprentissage réduite
- PostgreSQL + TimescaleDB : Robustesse relationnelle + optimisation pour données temporelles (logs d'activité)
- Architecture monolithique modulaire : Simplicité de déploiement tout en conservant une séparation claire des responsabilités
- Orchestration asynchrone : Gestion fine des
BackgroundTasksFastAPI pour les charges ML sans bloquer le thread principal - Pattern Adaptateur : Abstraction puissante pour uniformiser 17 algorithmes scikit-learn derrière une interface commune
- Svelte 5 Runes : Nouveau paradigme de réactivité ($state, $derived, $effect) plus intuitif que les stores
- ReportLab avancé : Génération de PDF complexes avec tableaux, graphiques intégrés, et mise en page multi-colonnes
- Monolithique modulaire > Microservices pour ce contexte : la communication inter-modules est plus simple et le déploiement est trivial
- Séparation claire des responsabilités : Routeurs → Services → Modèles → Base de données, chaque couche avec un rôle bien défini
- Schémas Pydantic comme contrat d'API : Validation automatique entrante/sortante, documentation OpenAPI gratuite
- Feedback immédiat : Prévisualisation en temps réel dans le Pipeline Builder réduit l'anxiété de l'utilisateur
- Explicabilité > Performance brute : Les utilisateurs préfèrent comprendre pourquoi un algorithme est recommandé plutôt que d'avoir une suggestion boîte noire
- Itération rapide : Développer d'abord un adaptateur, le tester, puis généraliser le pattern aux 16 autres
- Logging stratégique : Des logs bien placés dans le middleware et les services ont sauvé des heures de debugging
- Python 3.10+
- Node.js 20+ / Bun
- Docker & Docker Compose
- Git
cd datanova-infra
docker compose up -d
# PostgreSQL disponible sur localhost:5434
# pgAdmin disponible sur http://localhost:5051cd datanova-backend
# Créer l'environnement virtuel
python3.10 -m venv .venv
source .venv/bin/activate
# Installer les dépendances
pip install -r requirements.txt
# Configurer l'environnement
cp .env.example .env
# Modifier DATABASE_URL si nécessaire :
# DATABASE_URL=postgresql+asyncpg://admin:adminpassword@localhost:5434/datanova_db
# Appliquer les migrations
alembic upgrade heads
# Lancer le serveur
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000cd datanova-web
# Installer les dépendances
bun install
# Lancer le serveur de développement
bun run dev
# Frontend disponible sur http://localhost:5173- API Docs : http://localhost:8000/docs
- Frontend : http://localhost:5173
- pgAdmin : http://localhost:5051 (admin@example.com / admin123)
| 🏠 Accueil | 📊 Dashboard |
![]() |
![]() |
| 📁 Data Hub | 🔬 Analyse |
![]() |
![]() |
| 🔧 Pipeline Builder | 🧪 Expérimentations |
![]() |
![]() |
| 🧠 Recommandations | 📦 Model Registry |
![]() |
![]() |
| 🔐 Connexion | 📈 Activité |
![]() |
![]() |
| 📄 Rapport | 📖 Guide |
![]() |
![]() |
| Priorité | Fonctionnalité | Description |
|---|---|---|
| 🔥 Haute | AutoML avancé | Optimisation automatique des hyperparamètres (Grid Search, Bayesian) |
| 🔥 Haute | MLflow Integration | Traçabilité avancée des expériences avec MLflow |
| 🔥 Haute | pgvector sémantique | Recherche sémantique sur les métadonnées des datasets |
| 🟡 Moyenne | Export multi-format | Rapports en LaTeX, HTML, DOCX en plus du PDF |
| 🟡 Moyenne | Collaboration temps réel | Partage de datasets et pipelines entre utilisateurs |
| 🟡 Moyenne | Deep Learning | Support PyTorch/TensorFlow pour les réseaux de neurones |
| 🟢 Basse | Mode hors-ligne | PWA avec cache local pour usage sans connexion |
| 🟢 Basse | Internationalisation | Support multilingue (EN, FR, AR) |
| 🟢 Basse | Notebooks intégrés | Cellules Jupyter embarquées dans l'interface |
| Document | Description |
|---|---|
| TECHNICAL_ARCHITECTURE.md | Architecture technique détaillée |
| API_SPECIFICATIONS.md | Spécifications de toutes les API |
| USER_MANUAL.md | Manuel utilisateur pas à pas |
| DATA_DICTIONARY.md | Dictionnaire des données |
| DEPLOYMENT_GUIDE.md | Guide de déploiement |
| ACADEMIC_REPORT.md | Rapport académique |
Ce projet est sous licence MIT. Voir le fichier LICENCE pour plus de détails.




.png)



.png)

