Développer un pipeline complet et interprétable de prédiction du risque de maladies cardiaques en utilisant PySpark MLlib, intégrant les étapes de prétraitement, modélisation, évaluation et interprétation.
- Ingestion des données
- Nettoyage et Feature Engineering
- Entraînement avec PySpark MLlib (Logistic Regression, Random Forest, etc.)
- Évaluation (AUC, Accuracy, Recall)
- Interprétabilité du modèle (SHAP, coefficients)
- Déploiement via API ou Power BI
flowchart TB
%% 🧩 Flux global du projet
subgraph DATA["📂 Données"]
D1([Données locales])
end
subgraph PREPROCESS["⚙️ Nettoyage & Feature Engineering"]
P1([PySpark : nettoyage, transformation, création features])
end
subgraph ML["🤖 Pipeline ML (Databricks)"]
ML1([Entraînement modèles])
ML2([Tuning hyperparamètres])
ML3([Enregistrement modèles avec MLflow])
end
subgraph API["🔌 API FastAPI"]
API1([Serveur modèle pour prédictions temps réel])
end
subgraph APP["💻 App Streamlit"]
APP1([Interface utilisateur : saisie données patients])
APP2([Affichage prédictions])
end
subgraph DASH["📊 Dashboard Power BI"]
DASH1([Visualisation tendances globales et interprétation])
end
subgraph CICD["⚙️ CI/CD (optionnelle)"]
CICD1([GitHub Actions : tests et déploiement automatique])
end
%% Flux principaux
D1 --> P1 --> ML1 --> ML2 --> ML3 --> API1 --> APP2
APP1 --> API1
ML3 --> DASH1
CICD1 --> API1
CICD1 --> APP1
CICD1 --> DASH1
Heart-Disease-Risk-Prediction-PySpark-ML/
│
├── 📁 data/
│ ├── raw/ # Données brutes (ex: heart.csv)
│ ├── processed/ # Données nettoyées / transformées
│ └── external/ # Sources externes (OpenML, Kaggle…)
│
├── 📁 notebooks/
│ ├── 01_data_exploration.ipynb # Exploration et analyse EDA
│ ├── 02_feature_engineering.ipynb # Transformation et préparation des features
│ ├── 03_modeling_pyspark.ipynb # Entraînement du modèle PySpark ML
│ ├── 04_model_evaluation.ipynb # Évaluation du modèle
│ └── 05_model_interpretability.ipynb # SHAP / Feature importance
│
├── 📁 src/
│ ├── __init__.py
│ ├── data_preprocessing.py # Nettoyage et préparation des données
│ ├── feature_engineering.py # Encodage, normalisation, sélection
│ ├── model_training.py # Entraînement du modèle PySpark MLlib
│ ├── model_evaluation.py # Calcul des métriques (AUC, Recall, etc.)
│ ├── interpretability.py # SHAP, coefficients, Feature importance
│ └── utils.py # Fonctions utilitaires génériques
│
├── 📁 models/
│ ├── best_model/ # Modèle PySpark sauvegardé
│ ├── model_metrics.json # Résultats d’évaluation
│ └── feature_importance.csv # Importance des variables
│
├── 📁 tests/
│ ├── test_data_preprocessing.py
│ ├── test_feature_engineering.py
│ ├── test_model_training.py
│ └── test_model_evaluation.py
│
├── 📁 configs/
│ ├── config.yaml # Configuration générale du pipeline
│ └── spark_session.py # Paramétrage de la SparkSession
│
├── 📁 visualization/
│ ├── plot_feature_importance.py
│ ├── plot_confusion_matrix.py
│ └── dashboard_powerbi/ # Dossier pour dashboard Power BI (ou Streamlit)
│
├── 📁 deployment/
│ ├── api_predict.py # API Flask/FastAPI pour exposer le modèle
│ ├── Dockerfile # Conteneurisation du projet
│ ├── requirements.txt # Dépendances Python
│ └── docker-compose.yml # Orchestration locale
│
├── 📁 docs/
│ ├── README.md # Description du projet
│ ├── architecture_pipeline.png # Diagramme du pipeline
│ ├── data_dictionary.md # Description des variables
│ └── report.pdf # Rapport final / article
│
├── .gitignore
├── requirements.txt
├── README.md
└── LICENSE- Langage : Python 3.10
- Framework ML : PySpark MLlib
- Visualisation : Power BI / Matplotlib / Seaborn
- Déploiement : Docker + FastAPI (optionnel)
- Testing : Pytest
- CI/CD : GitHub Actions (optionnel)
git clone https://github.com/<username>/Heart-Disease-Risk-Prediction-PySpark-ML.git
cd Heart-Disease-Risk-Prediction-PySpark-ML
pip install -r requirements.txtspark-submit src/model_training.py- AUC : 0.86+
- Feature Importance : âge, cholestérol, pression, etc.
- Interprétabilité : SHAP values, coefficients linéaires