Skip to content

Dans ce projet, vous allons concevoir un pipeline d’apprentissage automatique avec PySpark qui permet d'analyser et modéliser des facteurs cardiovasculaires afin d’anticiper les risques et d’aider au diagnostic précoce.

Notifications You must be signed in to change notification settings

SalimM21/Heart-Disease-Risk-Prediction-avec-PySpark-ML

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

❤️ Heart Disease Risk Prediction avec PySpark ML

🎯 Objectif

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.


🧠 Architecture du pipeline

  1. Ingestion des données
  2. Nettoyage et Feature Engineering
  3. Entraînement avec PySpark MLlib (Logistic Regression, Random Forest, etc.)
  4. Évaluation (AUC, Accuracy, Recall)
  5. Interprétabilité du modèle (SHAP, coefficients)
  6. 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
Loading

📂 Structure du projet

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

⚙️ Stack technique

  • 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)

🧩 Installation

git clone https://github.com/<username>/Heart-Disease-Risk-Prediction-PySpark-ML.git
cd Heart-Disease-Risk-Prediction-PySpark-ML
pip install -r requirements.txt

🚀 Exécution du pipeline

spark-submit src/model_training.py

📊 Résultats attendus

  • AUC : 0.86+
  • Feature Importance : âge, cholestérol, pression, etc.
  • Interprétabilité : SHAP values, coefficients linéaires

About

Dans ce projet, vous allons concevoir un pipeline d’apprentissage automatique avec PySpark qui permet d'analyser et modéliser des facteurs cardiovasculaires afin d’anticiper les risques et d’aider au diagnostic précoce.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published