Spaces:
Sleeping
Sleeping
Commit
·
9f0dbb9
0
Parent(s):
Space export: API + Dockerfile (model loaded from HF Hub)
Browse files- .gitattributes +0 -0
- .github/workflows/ci.yml +35 -0
- .gitignore +27 -0
- .python-version +1 -0
- Dockerfile +27 -0
- README.md +306 -0
- data/processed/df_central.csv +0 -0
- data/processed/df_central_encode.csv +0 -0
- data/processed/df_central_encode_norm.csv +0 -0
- data/processed/df_central_norm.csv +0 -0
- data/raw/.gitkeep +0 -0
- main.py +6 -0
- models/.gitkeep +0 -0
- notebooks/01_analyse_exploratoire.ipynb +0 -0
- notebooks/02_preprocessing.ipynb +0 -0
- notebooks/03_modelisation.ipynb +0 -0
- pyproject.toml +33 -0
- requirements.txt +1255 -0
- src/__init__.py +6 -0
- src/api/schemas.py +29 -0
- src/api/server.py +57 -0
- src/data_preparation.py +25 -0
- src/train_model.py +61 -0
- src/utils.py +56 -0
- tests/test_api.py +41 -0
- tests/test_data_preparation.py +15 -0
- tests/test_predict.py +5 -0
- tests/test_smoke.py +2 -0
- uv.lock +0 -0
.gitattributes
ADDED
|
File without changes
|
.github/workflows/ci.yml
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
name: CI
|
| 2 |
+
|
| 3 |
+
on:
|
| 4 |
+
workflow_dispatch:
|
| 5 |
+
pull_request:
|
| 6 |
+
push:
|
| 7 |
+
branches: [ main ]
|
| 8 |
+
|
| 9 |
+
jobs:
|
| 10 |
+
tests:
|
| 11 |
+
runs-on: ubuntu-latest
|
| 12 |
+
steps:
|
| 13 |
+
- uses: actions/checkout@v4
|
| 14 |
+
|
| 15 |
+
- uses: actions/setup-python@v5
|
| 16 |
+
with:
|
| 17 |
+
python-version: "3.11"
|
| 18 |
+
|
| 19 |
+
- name: Install uv
|
| 20 |
+
run: pip install uv
|
| 21 |
+
|
| 22 |
+
- name: Sync deps
|
| 23 |
+
run: |
|
| 24 |
+
uv venv
|
| 25 |
+
source .venv/bin/activate
|
| 26 |
+
uv sync
|
| 27 |
+
|
| 28 |
+
# ICI : on rend src importable partout
|
| 29 |
+
- name: Make src importable
|
| 30 |
+
run: echo "PYTHONPATH=$GITHUB_WORKSPACE" >> $GITHUB_ENV
|
| 31 |
+
|
| 32 |
+
- name: Run tests
|
| 33 |
+
run: |
|
| 34 |
+
source .venv/bin/activate
|
| 35 |
+
pytest -q
|
.gitignore
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Python-generated files
|
| 2 |
+
__pycache__/
|
| 3 |
+
*.py[oc]
|
| 4 |
+
build/
|
| 5 |
+
dist/
|
| 6 |
+
wheels/
|
| 7 |
+
*.egg-info
|
| 8 |
+
|
| 9 |
+
# Virtual environments
|
| 10 |
+
.venv
|
| 11 |
+
|
| 12 |
+
# Jupyter
|
| 13 |
+
.ipynb_checkpoints/
|
| 14 |
+
*.nbconvert.ipynb
|
| 15 |
+
|
| 16 |
+
# macOS / VS Code
|
| 17 |
+
.DS_Store
|
| 18 |
+
.vscode/
|
| 19 |
+
|
| 20 |
+
# Données : cacher SEULEMENT les brutes
|
| 21 |
+
data/raw/*
|
| 22 |
+
!data/raw/.gitkeep
|
| 23 |
+
|
| 24 |
+
# Artefacts modèles : ignorer tout sauf le modèle final
|
| 25 |
+
models/*
|
| 26 |
+
!models/.gitkeep
|
| 27 |
+
models/.ipynb_checkpoints/
|
.python-version
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
3.13
|
Dockerfile
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
FROM python:3.11-slim
|
| 2 |
+
|
| 3 |
+
ENV DEBIAN_FRONTEND=noninteractive \
|
| 4 |
+
PYTHONDONTWRITEBYTECODE=1 \
|
| 5 |
+
PYTHONUNBUFFERED=1
|
| 6 |
+
|
| 7 |
+
RUN useradd -m appuser
|
| 8 |
+
WORKDIR /app
|
| 9 |
+
|
| 10 |
+
# uv pour les dépendances
|
| 11 |
+
RUN pip install --no-cache-dir uv
|
| 12 |
+
|
| 13 |
+
# Dépendances (cache de build) : pyproject + uv.lock d'abord
|
| 14 |
+
COPY pyproject.toml uv.lock ./
|
| 15 |
+
RUN uv sync --frozen
|
| 16 |
+
|
| 17 |
+
ENV PATH="/app/.venv/bin:${PATH}"
|
| 18 |
+
|
| 19 |
+
# Code
|
| 20 |
+
COPY . .
|
| 21 |
+
|
| 22 |
+
# Variables pour Spaces
|
| 23 |
+
ENV PORT=7860
|
| 24 |
+
EXPOSE 7860
|
| 25 |
+
|
| 26 |
+
USER appuser
|
| 27 |
+
CMD ["sh","-lc","uvicorn src.api.server:app --host 0.0.0.0 --port ${PORT:-7860}"]
|
README.md
ADDED
|
@@ -0,0 +1,306 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Prédiction de l’Attrition des Employés – TechNova Partners
|
| 2 |
+
|
| 3 |
+
Bienvenue dans ce projet de **classification en Machine Learning** dont l’objectif est d’**analyser et prédire les démissions d’employés (attrition)** au sein de l’ESN _TechNova Partners_, spécialisée dans le conseil en transformation digitale et la vente de solutions SaaS.
|
| 4 |
+
|
| 5 |
+
Ce dépôt contient l’ensemble du travail réalisé en tant que **Consultant Data Scientist** pour :
|
| 6 |
+
- comprendre les **facteurs clés** derrière les démissions,
|
| 7 |
+
- construire un **modèle de prédiction de l’attrition**,
|
| 8 |
+
- produire des **insights actionnables** pour les équipes RH
|
| 9 |
+
|
| 10 |
+
## Table des Matières
|
| 11 |
+
|
| 12 |
+
|
| 13 |
+
- [Contexte](#-contexte)
|
| 14 |
+
- [Objectifs](#-objectifs)
|
| 15 |
+
- [Jeux de données](#-jeux-de-données)
|
| 16 |
+
- [Approche](#-approche)
|
| 17 |
+
- [Structure du dépôt](#️-structure-du-dépôt)
|
| 18 |
+
- [Mise en place du modèle](#-mise-en-place-du-modèle)
|
| 19 |
+
- [Interprétabilité avec SHAP](#-interprétabilité-avec-shap)
|
| 20 |
+
- [Installation](#️-installation)
|
| 21 |
+
- [Utilisation](#️-utilisation)
|
| 22 |
+
- [Livrables](#-livrables)
|
| 23 |
+
- [Auteur](#-auteur)
|
| 24 |
+
|
| 25 |
+
---
|
| 26 |
+
<a id="-contexte"></a>
|
| 27 |
+
## Contexte
|
| 28 |
+
|
| 29 |
+
TechNova Partners constate un **taux de démission supérieur à la normale**.
|
| 30 |
+
|
| 31 |
+
Le responsable SIRH, souhaite :
|
| 32 |
+
- **objectiver** les hypothèses issues des entretiens de départ,
|
| 33 |
+
- **identifier** les **causes racines** de l’attrition,
|
| 34 |
+
- **anticiper** les risques de démission.
|
| 35 |
+
|
| 36 |
+
Accompagnement avec un **pipeline robuste** de modélisation + **restitution claire** pour les RH.
|
| 37 |
+
|
| 38 |
+
---
|
| 39 |
+
|
| 40 |
+
<a id="-objectifs"></a>
|
| 41 |
+
## Objectifs
|
| 42 |
+
|
| 43 |
+
- **Analyser** les profils "démissionnaires vs non-démissionnaires"
|
| 44 |
+
- **Identifier** les facteurs associés au risque de démission (ancienneté, salaire, satisfaction, performance, etc.).
|
| 45 |
+
- **Construire un modèle de classification** capable de prédire la probabilité de départ d’un employé.
|
| 46 |
+
- **Interpréter le modèle** (via SHAP) (globale & locale)
|
| 47 |
+
- **Fournir des livrables clairs** : notebooks, scripts, environnement reproductible et support de présentation.
|
| 48 |
+
|
| 49 |
+
---
|
| 50 |
+
|
| 51 |
+
<a id="-jeux-de-données"></a>
|
| 52 |
+
## Jeux de données
|
| 53 |
+
|
| 54 |
+
Trois sources principales sont mises à disposition :
|
| 55 |
+
|
| 56 |
+
1. **SIRH**: poste, département, contrat, âge, ancienneté, salaire, etc.
|
| 57 |
+
|
| 58 |
+
2. **Évaluations de performance**: notes annuelles, engagement/satisfaction, historiques RH.
|
| 59 |
+
3. **Sondage annuel employés**: bien-être, charge, management, équilibre vie pro/perso.
|
| 60 |
+
**Variable cible** (attrition = 1/0)
|
| 61 |
+
|
| 62 |
+
Ces différentes sources sont **fusionnées et préparées** pour construire un dataset modélisable.
|
| 63 |
+
|
| 64 |
+
---
|
| 65 |
+
<a id="-approche"></a>
|
| 66 |
+
## Approche
|
| 67 |
+
|
| 68 |
+
L’analyse suit les grandes étapes suivantes :
|
| 69 |
+
|
| 70 |
+
1. **Compréhension métier & des données**
|
| 71 |
+
- Lecture des descriptions,
|
| 72 |
+
- Mapping des variables,
|
| 73 |
+
- Identification de la cible.
|
| 74 |
+
|
| 75 |
+
2. **Nettoyage & préparation**
|
| 76 |
+
- Gestion des valeurs manquantes,
|
| 77 |
+
- Encodage des variables catégorielles,
|
| 78 |
+
- Transformation / normalisation des variables numériques,
|
| 79 |
+
- Jointure des différentes sources de données.
|
| 80 |
+
|
| 81 |
+
3. **Analyse Exploratoire (EDA)**
|
| 82 |
+
- Statistiques descriptives générales,
|
| 83 |
+
- Comparaisons _démissionnaires_ vs _non-démissionnaires_,
|
| 84 |
+
- Visualisation des distributions et corrélations,
|
| 85 |
+
- Identification de pistes d’explication à tester dans le modèle.
|
| 86 |
+
|
| 87 |
+
4. **Modélisation**
|
| 88 |
+
- Séparation train/test,
|
| 89 |
+
- Entraînement de plusieurs modèles de classification (Dummy, Logistic Regression, Random Forest),
|
| 90 |
+
- Recherche d’hyperparamètres,
|
| 91 |
+
- Évaluation via des métriques adaptées (PR AUC, ROC-AUC, AUC, Précision, Rappel, F1-score, Seuil de décision )
|
| 92 |
+
|
| 93 |
+
5. **Interprétabilité**
|
| 94 |
+
- Utilisation de **SHAP** pour comprendre l’impact des variables,
|
| 95 |
+
- Analyse globale (features les plus importantes),
|
| 96 |
+
- Analyse locale (explication de cas particuliers).
|
| 97 |
+
|
| 98 |
+
6. **Restitution**
|
| 99 |
+
- Synthèse des résultats pour les RH,
|
| 100 |
+
- Recommandations opérationnelles et pistes d’actions.
|
| 101 |
+
|
| 102 |
+
---
|
| 103 |
+
<a id="-structure-du-dépôt"></a>
|
| 104 |
+
## Structure du dépôt
|
| 105 |
+
|
| 106 |
+
```text
|
| 107 |
+
.
|
| 108 |
+
├── src/
|
| 109 |
+
│ ├── __init__.py
|
| 110 |
+
│ ├── data_preparation.py. # chargement & split X/y (données traitées)
|
| 111 |
+
│ ├── train_model.py # entraînement + sauvegarde artefact
|
| 112 |
+
│ └── utils.py # utilitaires (chargement modèle, prédiction unitaire)
|
| 113 |
+
├── tests/
|
| 114 |
+
│ ├── test_data_preparation.py
|
| 115 |
+
│ └── test_predict.py
|
| 116 |
+
├── models/ # artefact modèle
|
| 117 |
+
├── data/
|
| 118 |
+
│ ├── raw/ # fichiers brutsv(privé, ignoré) – .gitkeep
|
| 119 |
+
│ └── processed/ # données traités (visibles)
|
| 120 |
+
├── notebooks/
|
| 121 |
+
│ ├── 01_analyse_exploratoire.ipynb
|
| 122 |
+
│ ├── 02_preprocessing.ipynb
|
| 123 |
+
│ └── 03_modelisation.ipynb
|
| 124 |
+
├── reports
|
| 125 |
+
├── main.py # entraînement
|
| 126 |
+
├── pyproject.toml # configuration de l'environnement & dépendances
|
| 127 |
+
├── requirements.txt. # exporté depuis uv
|
| 128 |
+
├── README.md
|
| 129 |
+
├── .gitignore
|
| 130 |
+
└── uv.lock # verrouillage précis des versions
|
| 131 |
+
|
| 132 |
+
```
|
| 133 |
+
<a id="-mise-en-place-du-modèle"></a>
|
| 134 |
+
|
| 135 |
+
## Mise en place du modèle
|
| 136 |
+
|
| 137 |
+
1. **Chargement et préparation**
|
| 138 |
+
|
| 139 |
+
- Import des trois extraits (SIRH, performance, sondage),
|
| 140 |
+
|
| 141 |
+
- Jointure sur l’identifiant employé,
|
| 142 |
+
|
| 143 |
+
- Construction de la variable cible (attrition).
|
| 144 |
+
|
| 145 |
+
2. **Prétraitement**
|
| 146 |
+
|
| 147 |
+
- Gestion des valeurs manquantes,
|
| 148 |
+
|
| 149 |
+
- Encodage des variables catégorielles (One-Hot, Ordinal, …),
|
| 150 |
+
|
| 151 |
+
- Normalisation / standardisation de certaines variables,
|
| 152 |
+
|
| 153 |
+
- Séparation train/test.
|
| 154 |
+
|
| 155 |
+
3. **Modélisation**
|
| 156 |
+
|
| 157 |
+
Plusieurs modèles de classification sont testés :
|
| 158 |
+
|
| 159 |
+
- Régression Logistique
|
| 160 |
+
|
| 161 |
+
- Random Forest
|
| 162 |
+
|
| 163 |
+
- Dummy
|
| 164 |
+
|
| 165 |
+
**Évaluation à l’aide de :**
|
| 166 |
+
|
| 167 |
+
- Accuracy
|
| 168 |
+
|
| 169 |
+
- Precision / Recall
|
| 170 |
+
|
| 171 |
+
- F1-score
|
| 172 |
+
|
| 173 |
+
- ROC-AUC
|
| 174 |
+
|
| 175 |
+
- PR AUC
|
| 176 |
+
|
| 177 |
+
- Matrices de confusion et courbes ROC/PR
|
| 178 |
+
|
| 179 |
+
Le modèle final retenu est celui offrant **le meilleur compromis entre performance et interprétabilité** pour les RH.
|
| 180 |
+
|
| 181 |
+
---
|
| 182 |
+
<a id="-interprétabilité-avec-shap"></a>
|
| 183 |
+
## Interprétabilité avec SHAP
|
| 184 |
+
|
| 185 |
+
- Importance globale des variables: Quelles caractéristiques influencent le plus la probabilité de démission ? (summary plot)
|
| 186 |
+
|
| 187 |
+
- Explication de cas individuels: Pourquoi tel employé est-il jugé “à risque” par le modèle ? (force plot)
|
| 188 |
+
|
| 189 |
+
- Aide à la décision RH: leviers d’action (ajustement salarial, mobilité interne, charge de travail, reconnaissance, etc.)
|
| 190 |
+
|
| 191 |
+
---
|
| 192 |
+
<a id="-installation"></a>
|
| 193 |
+
## Installation
|
| 194 |
+
|
| 195 |
+
**Prérequis**
|
| 196 |
+
|
| 197 |
+
- Python 3.10+
|
| 198 |
+
|
| 199 |
+
- git
|
| 200 |
+
|
| 201 |
+
- [uv](https://github.com/astral-sh/uv)
|
| 202 |
+
|
| 203 |
+
## Étapes d’installation
|
| 204 |
+
|
| 205 |
+
1. **Cloner le dépôt**
|
| 206 |
+
|
| 207 |
+
```bash
|
| 208 |
+
git clone https://github.com/veranoscience/OpenclassroomsProject.git
|
| 209 |
+
|
| 210 |
+
cd OpenclassroomsProject
|
| 211 |
+
```
|
| 212 |
+
|
| 213 |
+
2. **Créer un environnement virtuel**
|
| 214 |
+
|
| 215 |
+
```bash
|
| 216 |
+
uv venv && source .venv/bin/activate
|
| 217 |
+
```
|
| 218 |
+
|
| 219 |
+
3. **Installer les dépendances**
|
| 220 |
+
|
| 221 |
+
```bash
|
| 222 |
+
uv sync
|
| 223 |
+
```
|
| 224 |
+
|
| 225 |
+
---
|
| 226 |
+
|
| 227 |
+
<a id="-utilisation"></a>
|
| 228 |
+
## Utilisation
|
| 229 |
+
|
| 230 |
+
1. Lancer les notebooks
|
| 231 |
+
|
| 232 |
+
Depuis la racine du projet, avec l’environnement activé :
|
| 233 |
+
|
| 234 |
+
```bash
|
| 235 |
+
jupyter notebook
|
| 236 |
+
```
|
| 237 |
+
|
| 238 |
+
Puis ouvrir:
|
| 239 |
+
|
| 240 |
+
- `notebooks/01_analyse_exploratoire.ipynb` pour l’analyse exploratoire
|
| 241 |
+
|
| 242 |
+
- `notebooks/02_preprocessing.ipynb` pour le nettoyage & feature engineering
|
| 243 |
+
|
| 244 |
+
- `notebooks/03_modelisation.ipynb` pour la modélisation et SHAP
|
| 245 |
+
|
| 246 |
+
Script (entrai&nement rapide)
|
| 247 |
+
|
| 248 |
+
```bash
|
| 249 |
+
python main.py
|
| 250 |
+
```
|
| 251 |
+
Un artefact est sauvegardé dans `models/model.joblib`
|
| 252 |
+
|
| 253 |
+
---
|
| 254 |
+
|
| 255 |
+
## Workflow Git (branches / commits / tags)
|
| 256 |
+
|
| 257 |
+
- Branche principale : `main` (protégée)
|
| 258 |
+
- Conventions de branches : `<type><-resume->`
|
| 259 |
+
- Types : `feat`, `fix`, `docs`, `refactor`, `chore`, `test`, `data`
|
| 260 |
+
- Examples : `docs/mise-a-jour-readme`
|
| 261 |
+
- Commits descriptifs: `feat: ...`, `chore: ...`
|
| 262 |
+
- Tags de version : `v0.1.0`, `v0.2.0`, ...
|
| 263 |
+
- Créer : `git tag -a v0.1.0 -m "v0.1.0: base"`
|
| 264 |
+
- Pousser : `git push origin v0.1.0`
|
| 265 |
+
|
| 266 |
+
Résolution de conflits : utiliser l’outil intégré **VS Code**
|
| 267 |
+
(Accept Current/Incoming → `git add .` → `git rebase --continue`).
|
| 268 |
+
|
| 269 |
+
## Authentification & Sécurité
|
| 270 |
+
|
| 271 |
+
Aucun secret n’est committé
|
| 272 |
+
**Compte GitHub** : 2FA activée, Secret Scanning & Dependabot activés.
|
| 273 |
+
|
| 274 |
+
---
|
| 275 |
+
|
| 276 |
+
<a id="-livrables"></a>
|
| 277 |
+
## Livrables
|
| 278 |
+
|
| 279 |
+
Le projet fournit :
|
| 280 |
+
|
| 281 |
+
- **Code source** (notebooks + src/ + main.py)
|
| 282 |
+
|
| 283 |
+
- **Environnement reproductible** : `pyproject.toml` (uv), `uv.lock`, `requirements.txt` exporté.
|
| 284 |
+
|
| 285 |
+
- **README** complet (installation, utilisation, sécurité, workflow)
|
| 286 |
+
|
| 287 |
+
- **Versioning** : historique de commits clair, branches dédiées, tags (ex. v0.1.0).
|
| 288 |
+
|
| 289 |
+
- **Présentation** : `reports/` (PDF)
|
| 290 |
+
|
| 291 |
+
---
|
| 292 |
+
|
| 293 |
+
## Versioning / Changelog
|
| 294 |
+
|
| 295 |
+
- Version courante : voir tags Git.
|
| 296 |
+
|
| 297 |
+
- `CHANGELOG.md` pour tracer les évolutions :
|
| 298 |
+
|
| 299 |
+
v0.1.0 — structure, dépendances, notebooks, entraînement minimal, SHAP.
|
| 300 |
+
|
| 301 |
+
---
|
| 302 |
+
|
| 303 |
+
<a id="-auteur"></a>
|
| 304 |
+
## Auteur
|
| 305 |
+
|
| 306 |
+
Kseniia Dautel
|
data/processed/df_central.csv
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
data/processed/df_central_encode.csv
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
data/processed/df_central_encode_norm.csv
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
data/processed/df_central_norm.csv
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
data/raw/.gitkeep
ADDED
|
File without changes
|
main.py
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Point d'entrée : entraîne et sauvegarde le modèle final."""
|
| 2 |
+
from src.train_model import train_and_save
|
| 3 |
+
|
| 4 |
+
if __name__ == "__main__":
|
| 5 |
+
f1 = train_and_save()
|
| 6 |
+
print(f"[OK] Modèle entraîné et sauvegardé dans models/model.joblib | F1_test = {f1:.3f}")
|
models/.gitkeep
ADDED
|
File without changes
|
notebooks/01_analyse_exploratoire.ipynb
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
notebooks/02_preprocessing.ipynb
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
notebooks/03_modelisation.ipynb
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
pyproject.toml
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[project]
|
| 2 |
+
name = "classification-informations"
|
| 3 |
+
version = "0.1.0"
|
| 4 |
+
description = "Project 4 Classification automatique d'informations"
|
| 5 |
+
authors = [
|
| 6 |
+
{ name = "Ksenia Dautel" }
|
| 7 |
+
]
|
| 8 |
+
readme = "README.md"
|
| 9 |
+
requires-python = ">=3.13"
|
| 10 |
+
dependencies = [
|
| 11 |
+
"fastapi>=0.124.0",
|
| 12 |
+
"httpx>=0.28.1",
|
| 13 |
+
"imbalanced-learn>=0.14.0",
|
| 14 |
+
"ipykernel>=7.1.0",
|
| 15 |
+
"jupyter>=1.1.1",
|
| 16 |
+
"matplotlib>=3.10.7",
|
| 17 |
+
"numpy>=2.3.4",
|
| 18 |
+
"pandas>=2.3.3",
|
| 19 |
+
"pydantic>=2",
|
| 20 |
+
"scikit-learn>=1.7.2",
|
| 21 |
+
"scipy>=1.16.3",
|
| 22 |
+
"seaborn>=0.13.2",
|
| 23 |
+
"shap>=0.49.1",
|
| 24 |
+
"joblib>=1.4.0",
|
| 25 |
+
"uvicorn>=0.38.0",
|
| 26 |
+
"huggingface_hub>=0.24.0"
|
| 27 |
+
]
|
| 28 |
+
|
| 29 |
+
[dependency-groups]
|
| 30 |
+
dev = [
|
| 31 |
+
"pytest>=9.0.1",
|
| 32 |
+
"pytest-cov>=5.0.0"
|
| 33 |
+
]
|
requirements.txt
ADDED
|
@@ -0,0 +1,1255 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# This file was autogenerated by uv via the following command:
|
| 2 |
+
# uv export --format requirements.txt
|
| 3 |
+
anyio==4.11.0 \
|
| 4 |
+
--hash=sha256:0287e96f4d26d4149305414d4e3bc32f0dcd0862365a4bddea19d7a1ec38c4fc \
|
| 5 |
+
--hash=sha256:82a8d0b81e318cc5ce71a5f1f8b5c4e63619620b63141ef8c995fa0db95a57c4
|
| 6 |
+
# via
|
| 7 |
+
# httpx
|
| 8 |
+
# jupyter-server
|
| 9 |
+
appnope==0.1.4 ; sys_platform == 'darwin' \
|
| 10 |
+
--hash=sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee \
|
| 11 |
+
--hash=sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c
|
| 12 |
+
# via ipykernel
|
| 13 |
+
argon2-cffi==25.1.0 \
|
| 14 |
+
--hash=sha256:694ae5cc8a42f4c4e2bf2ca0e64e51e23a040c6a517a85074683d3959e1346c1 \
|
| 15 |
+
--hash=sha256:fdc8b074db390fccb6eb4a3604ae7231f219aa669a2652e0f20e16ba513d5741
|
| 16 |
+
# via jupyter-server
|
| 17 |
+
argon2-cffi-bindings==25.1.0 \
|
| 18 |
+
--hash=sha256:1db89609c06afa1a214a69a462ea741cf735b29a57530478c06eb81dd403de99 \
|
| 19 |
+
--hash=sha256:1e021e87faa76ae0d413b619fe2b65ab9a037f24c60a1e6cc43457ae20de6dc6 \
|
| 20 |
+
--hash=sha256:2630b6240b495dfab90aebe159ff784d08ea999aa4b0d17efa734055a07d2f44 \
|
| 21 |
+
--hash=sha256:3c6702abc36bf3ccba3f802b799505def420a1b7039862014a65db3205967f5a \
|
| 22 |
+
--hash=sha256:3d3f05610594151994ca9ccb3c771115bdb4daef161976a266f0dd8aa9996b8f \
|
| 23 |
+
--hash=sha256:473bcb5f82924b1becbb637b63303ec8d10e84c8d241119419897a26116515d2 \
|
| 24 |
+
--hash=sha256:7aef0c91e2c0fbca6fc68e7555aa60ef7008a739cbe045541e438373bc54d2b0 \
|
| 25 |
+
--hash=sha256:84a461d4d84ae1295871329b346a97f68eade8c53b6ed9a7ca2d7467f3c8ff6f \
|
| 26 |
+
--hash=sha256:87c33a52407e4c41f3b70a9c2d3f6056d88b10dad7695be708c5021673f55623 \
|
| 27 |
+
--hash=sha256:8b8efee945193e667a396cbc7b4fb7d357297d6234d30a489905d96caabde56b \
|
| 28 |
+
--hash=sha256:a1c70058c6ab1e352304ac7e3b52554daadacd8d453c1752e547c76e9c99ac44 \
|
| 29 |
+
--hash=sha256:a98cd7d17e9f7ce244c0803cad3c23a7d379c301ba618a5fa76a67d116618b98 \
|
| 30 |
+
--hash=sha256:aecba1723ae35330a008418a91ea6cfcedf6d31e5fbaa056a166462ff066d500 \
|
| 31 |
+
--hash=sha256:b0fdbcf513833809c882823f98dc2f931cf659d9a1429616ac3adebb49f5db94 \
|
| 32 |
+
--hash=sha256:b55aec3565b65f56455eebc9b9f34130440404f27fe21c3b375bf1ea4d8fbae6 \
|
| 33 |
+
--hash=sha256:b957f3e6ea4d55d820e40ff76f450952807013d361a65d7f28acc0acbf29229d \
|
| 34 |
+
--hash=sha256:ba92837e4a9aa6a508c8d2d7883ed5a8f6c308c89a4790e1e447a220deb79a85 \
|
| 35 |
+
--hash=sha256:c4f9665de60b1b0e99bcd6be4f17d90339698ce954cfd8d9cf4f91c995165a92 \
|
| 36 |
+
--hash=sha256:c87b72589133f0346a1cb8d5ecca4b933e3c9b64656c9d175270a000e73b288d \
|
| 37 |
+
--hash=sha256:d3e924cfc503018a714f94a49a149fdc0b644eaead5d1f089330399134fa028a \
|
| 38 |
+
--hash=sha256:e2fd3bfbff3c5d74fef31a722f729bf93500910db650c925c2d6ef879a7e51cb
|
| 39 |
+
# via argon2-cffi
|
| 40 |
+
arrow==1.4.0 \
|
| 41 |
+
--hash=sha256:749f0769958ebdc79c173ff0b0670d59051a535fa26e8eba02953dc19eb43205 \
|
| 42 |
+
--hash=sha256:ed0cc050e98001b8779e84d461b0098c4ac597e88704a655582b21d116e526d7
|
| 43 |
+
# via isoduration
|
| 44 |
+
asttokens==3.0.0 \
|
| 45 |
+
--hash=sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7 \
|
| 46 |
+
--hash=sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2
|
| 47 |
+
# via stack-data
|
| 48 |
+
async-lru==2.0.5 \
|
| 49 |
+
--hash=sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb \
|
| 50 |
+
--hash=sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943
|
| 51 |
+
# via jupyterlab
|
| 52 |
+
attrs==25.4.0 \
|
| 53 |
+
--hash=sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11 \
|
| 54 |
+
--hash=sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373
|
| 55 |
+
# via
|
| 56 |
+
# jsonschema
|
| 57 |
+
# referencing
|
| 58 |
+
babel==2.17.0 \
|
| 59 |
+
--hash=sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d \
|
| 60 |
+
--hash=sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2
|
| 61 |
+
# via jupyterlab-server
|
| 62 |
+
beautifulsoup4==4.14.2 \
|
| 63 |
+
--hash=sha256:2a98ab9f944a11acee9cc848508ec28d9228abfd522ef0fad6a02a72e0ded69e \
|
| 64 |
+
--hash=sha256:5ef6fa3a8cbece8488d66985560f97ed091e22bbc4e9c2338508a9d5de6d4515
|
| 65 |
+
# via nbconvert
|
| 66 |
+
bleach==6.3.0 \
|
| 67 |
+
--hash=sha256:6f3b91b1c0a02bb9a78b5a454c92506aa0fdf197e1d5e114d2e00c6f64306d22 \
|
| 68 |
+
--hash=sha256:fe10ec77c93ddf3d13a73b035abaac7a9f5e436513864ccdad516693213c65d6
|
| 69 |
+
# via nbconvert
|
| 70 |
+
certifi==2025.10.5 \
|
| 71 |
+
--hash=sha256:0f212c2744a9bb6de0c56639a6f68afe01ecd92d91f14ae897c4fe7bbeeef0de \
|
| 72 |
+
--hash=sha256:47c09d31ccf2acf0be3f701ea53595ee7e0b8fa08801c6624be771df09ae7b43
|
| 73 |
+
# via
|
| 74 |
+
# httpcore
|
| 75 |
+
# httpx
|
| 76 |
+
# requests
|
| 77 |
+
cffi==2.0.0 \
|
| 78 |
+
--hash=sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb \
|
| 79 |
+
--hash=sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b \
|
| 80 |
+
--hash=sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f \
|
| 81 |
+
--hash=sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9 \
|
| 82 |
+
--hash=sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c \
|
| 83 |
+
--hash=sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75 \
|
| 84 |
+
--hash=sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e \
|
| 85 |
+
--hash=sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25 \
|
| 86 |
+
--hash=sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b \
|
| 87 |
+
--hash=sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91 \
|
| 88 |
+
--hash=sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592 \
|
| 89 |
+
--hash=sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1 \
|
| 90 |
+
--hash=sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529 \
|
| 91 |
+
--hash=sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca \
|
| 92 |
+
--hash=sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4 \
|
| 93 |
+
--hash=sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b \
|
| 94 |
+
--hash=sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205 \
|
| 95 |
+
--hash=sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27 \
|
| 96 |
+
--hash=sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512 \
|
| 97 |
+
--hash=sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d \
|
| 98 |
+
--hash=sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c \
|
| 99 |
+
--hash=sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8 \
|
| 100 |
+
--hash=sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9 \
|
| 101 |
+
--hash=sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775 \
|
| 102 |
+
--hash=sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc \
|
| 103 |
+
--hash=sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13 \
|
| 104 |
+
--hash=sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26 \
|
| 105 |
+
--hash=sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b \
|
| 106 |
+
--hash=sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6 \
|
| 107 |
+
--hash=sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c \
|
| 108 |
+
--hash=sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef \
|
| 109 |
+
--hash=sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad \
|
| 110 |
+
--hash=sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3 \
|
| 111 |
+
--hash=sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2 \
|
| 112 |
+
--hash=sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5
|
| 113 |
+
# via
|
| 114 |
+
# argon2-cffi-bindings
|
| 115 |
+
# pyzmq
|
| 116 |
+
charset-normalizer==3.4.4 \
|
| 117 |
+
--hash=sha256:2b7d8f6c26245217bd2ad053761201e9f9680f8ce52f0fcd8d0755aeae5b2152 \
|
| 118 |
+
--hash=sha256:3162d5d8ce1bb98dd51af660f2121c55d0fa541b46dff7bb9b9f86ea1d87de72 \
|
| 119 |
+
--hash=sha256:362d61fd13843997c1c446760ef36f240cf81d3ebf74ac62652aebaf7838561e \
|
| 120 |
+
--hash=sha256:47cc91b2f4dd2833fddaedd2893006b0106129d4b94fdb6af1f4ce5a9965577c \
|
| 121 |
+
--hash=sha256:542d2cee80be6f80247095cc36c418f7bddd14f4a6de45af91dfad36d817bba2 \
|
| 122 |
+
--hash=sha256:554af85e960429cf30784dd47447d5125aaa3b99a6f0683589dbd27e2f45da44 \
|
| 123 |
+
--hash=sha256:5bd2293095d766545ec1a8f612559f6b40abc0eb18bb2f5d1171872d34036ede \
|
| 124 |
+
--hash=sha256:6b39f987ae8ccdf0d2642338faf2abb1862340facc796048b604ef14919e55ed \
|
| 125 |
+
--hash=sha256:74018750915ee7ad843a774364e13a3db91682f26142baddf775342c3f5b1133 \
|
| 126 |
+
--hash=sha256:74664978bb272435107de04e36db5a9735e78232b85b77d45cfb38f758efd33e \
|
| 127 |
+
--hash=sha256:752944c7ffbfdd10c074dc58ec2d5a8a4cd9493b314d367c14d24c17684ddd14 \
|
| 128 |
+
--hash=sha256:799a7a5e4fb2d5898c60b640fd4981d6a25f1c11790935a44ce38c54e985f828 \
|
| 129 |
+
--hash=sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f \
|
| 130 |
+
--hash=sha256:81d5eb2a312700f4ecaa977a8235b634ce853200e828fbadf3a9c50bab278328 \
|
| 131 |
+
--hash=sha256:82004af6c302b5d3ab2cfc4cc5f29db16123b1a8417f2e25f9066f91d4411090 \
|
| 132 |
+
--hash=sha256:8a6562c3700cce886c5be75ade4a5db4214fda19fede41d9792d100288d8f94c \
|
| 133 |
+
--hash=sha256:8af65f14dc14a79b924524b1e7fffe304517b2bff5a58bf64f30b98bbc5079eb \
|
| 134 |
+
--hash=sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a \
|
| 135 |
+
--hash=sha256:99ae2cffebb06e6c22bdc25801d7b30f503cc87dbd283479e7b606f70aff57ec \
|
| 136 |
+
--hash=sha256:9a26f18905b8dd5d685d6d07b0cdf98a79f3c7a918906af7cc143ea2e164c8bc \
|
| 137 |
+
--hash=sha256:9b35f4c90079ff2e2edc5b26c0c77925e5d2d255c42c74fdb70fb49b172726ac \
|
| 138 |
+
--hash=sha256:a8a8b89589086a25749f471e6a900d3f662d1d3b6e2e59dcecf787b1cc3a1894 \
|
| 139 |
+
--hash=sha256:b435cba5f4f750aa6c0a0d92c541fb79f69a387c91e61f1795227e4ed9cece14 \
|
| 140 |
+
--hash=sha256:bc7637e2f80d8530ee4a78e878bce464f70087ce73cf7c1caf142416923b98f1 \
|
| 141 |
+
--hash=sha256:c0463276121fdee9c49b98908b3a89c39be45d86d1dbaa22957e38f6321d4ce3 \
|
| 142 |
+
--hash=sha256:c8ae8a0f02f57a6e61203a31428fa1d677cbe50c93622b4149d5c0f319c1d19e \
|
| 143 |
+
--hash=sha256:cb6254dc36b47a990e59e1068afacdcd02958bdcce30bb50cc1700a8b9d624a6 \
|
| 144 |
+
--hash=sha256:d1f13550535ad8cff21b8d757a3257963e951d96e20ec82ab44bc64aeb62a191 \
|
| 145 |
+
--hash=sha256:da3326d9e65ef63a817ecbcc0df6e94463713b754fe293eaa03da99befb9a5bd \
|
| 146 |
+
--hash=sha256:de00632ca48df9daf77a2c65a484531649261ec9f25489917f09e455cb09ddb2 \
|
| 147 |
+
--hash=sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443f045edd0de921108345794 \
|
| 148 |
+
--hash=sha256:ecaae4149d99b1c9e7b88bb03e3221956f68fd6d50be2ef061b2381b61d20838 \
|
| 149 |
+
--hash=sha256:f8bf04158c6b607d747e93949aa60618b61312fe647a6369f88ce2ff16043490 \
|
| 150 |
+
--hash=sha256:f9d332f8c2a2fcbffe1378594431458ddbef721c1769d78e2cbc06280d8155f9
|
| 151 |
+
# via requests
|
| 152 |
+
cloudpickle==3.1.2 \
|
| 153 |
+
--hash=sha256:7fda9eb655c9c230dab534f1983763de5835249750e85fbcef43aaa30a9a2414 \
|
| 154 |
+
--hash=sha256:9acb47f6afd73f60dc1df93bb801b472f05ff42fa6c84167d25cb206be1fbf4a
|
| 155 |
+
# via shap
|
| 156 |
+
colorama==0.4.6 ; sys_platform == 'win32' \
|
| 157 |
+
--hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \
|
| 158 |
+
--hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6
|
| 159 |
+
# via
|
| 160 |
+
# ipython
|
| 161 |
+
# tqdm
|
| 162 |
+
comm==0.2.3 \
|
| 163 |
+
--hash=sha256:2dc8048c10962d55d7ad693be1e7045d891b7ce8d999c97963a5e3e99c055971 \
|
| 164 |
+
--hash=sha256:c615d91d75f7f04f095b30d1c1711babd43bdc6419c1be9886a85f2f4e489417
|
| 165 |
+
# via
|
| 166 |
+
# ipykernel
|
| 167 |
+
# ipywidgets
|
| 168 |
+
contourpy==1.3.3 \
|
| 169 |
+
--hash=sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880 \
|
| 170 |
+
--hash=sha256:13b68d6a62db8eafaebb8039218921399baf6e47bf85006fd8529f2a08ef33fc \
|
| 171 |
+
--hash=sha256:177fb367556747a686509d6fef71d221a4b198a3905fe824430e5ea0fda54eb5 \
|
| 172 |
+
--hash=sha256:1cadd8b8969f060ba45ed7c1b714fe69185812ab43bd6b86a9123fe8f99c3263 \
|
| 173 |
+
--hash=sha256:1fd43c3be4c8e5fd6e4f2baeae35ae18176cf2e5cced681cca908addf1cdd53b \
|
| 174 |
+
--hash=sha256:22e9b1bd7a9b1d652cd77388465dc358dafcd2e217d35552424aa4f996f524f5 \
|
| 175 |
+
--hash=sha256:283edd842a01e3dcd435b1c5116798d661378d83d36d337b8dde1d16a5fc9ba3 \
|
| 176 |
+
--hash=sha256:2a2a8b627d5cc6b7c41a4beff6c5ad5eb848c88255fda4a8745f7e901b32d8e4 \
|
| 177 |
+
--hash=sha256:2b7e9480ffe2b0cd2e787e4df64270e3a0440d9db8dc823312e2c940c167df7e \
|
| 178 |
+
--hash=sha256:33c82d0138c0a062380332c861387650c82e4cf1747aaa6938b9b6516762e772 \
|
| 179 |
+
--hash=sha256:348ac1f5d4f1d66d3322420f01d42e43122f43616e0f194fc1c9f5d830c5b286 \
|
| 180 |
+
--hash=sha256:3c30273eb2a55024ff31ba7d052dde990d7d8e5450f4bbb6e913558b3d6c2301 \
|
| 181 |
+
--hash=sha256:4debd64f124ca62069f313a9cb86656ff087786016d76927ae2cf37846b006c9 \
|
| 182 |
+
--hash=sha256:4feffb6537d64b84877da813a5c30f1422ea5739566abf0bd18065ac040e120a \
|
| 183 |
+
--hash=sha256:50ed930df7289ff2a8d7afeb9603f8289e5704755c7e5c3bbd929c90c817164b \
|
| 184 |
+
--hash=sha256:644a6853d15b2512d67881586bd03f462c7ab755db95f16f14d7e238f2852c67 \
|
| 185 |
+
--hash=sha256:655456777ff65c2c548b7c454af9c6f33f16c8884f11083244b5819cc214f1b5 \
|
| 186 |
+
--hash=sha256:66c8a43a4f7b8df8b71ee1840e4211a3c8d93b214b213f590e18a1beca458f7d \
|
| 187 |
+
--hash=sha256:6afc576f7b33cf00996e5c1102dc2a8f7cc89e39c0b55df93a0b78c1bd992b36 \
|
| 188 |
+
--hash=sha256:6c3d53c796f8647d6deb1abe867daeb66dcc8a97e8455efa729516b997b8ed99 \
|
| 189 |
+
--hash=sha256:87acf5963fc2b34825e5b6b048f40e3635dd547f590b04d2ab317c2619ef7ae8 \
|
| 190 |
+
--hash=sha256:88df9880d507169449d434c293467418b9f6cbe82edd19284aa0409e7fdb933d \
|
| 191 |
+
--hash=sha256:95b181891b4c71de4bb404c6621e7e2390745f887f2a026b2d99e92c17892339 \
|
| 192 |
+
--hash=sha256:a15459b0f4615b00bbd1e91f1b9e19b7e63aea7483d03d804186f278c0af2659 \
|
| 193 |
+
--hash=sha256:a22738912262aa3e254e4f3cb079a95a67132fc5a063890e224393596902f5a4 \
|
| 194 |
+
--hash=sha256:ab2fd90904c503739a75b7c8c5c01160130ba67944a7b77bbf36ef8054576e7f \
|
| 195 |
+
--hash=sha256:ab3074b48c4e2cf1a960e6bbeb7f04566bf36b1861d5c9d4d8ac04b82e38ba20 \
|
| 196 |
+
--hash=sha256:afe5a512f31ee6bd7d0dda52ec9864c984ca3d66664444f2d72e0dc4eb832e36 \
|
| 197 |
+
--hash=sha256:b20c7c9a3bf701366556e1b1984ed2d0cedf999903c51311417cf5f591d8c78d \
|
| 198 |
+
--hash=sha256:b7301b89040075c30e5768810bc96a8e8d78085b47d8be6e4c3f5a0b4ed478a0 \
|
| 199 |
+
--hash=sha256:b7448cb5a725bb1e35ce88771b86fba35ef418952474492cf7c764059933ff8b \
|
| 200 |
+
--hash=sha256:ca0fdcd73925568ca027e0b17ab07aad764be4706d0a925b89227e447d9737b7 \
|
| 201 |
+
--hash=sha256:ca658cd1a680a5c9ea96dc61cdbae1e85c8f25849843aa799dfd3cb370ad4fbe \
|
| 202 |
+
--hash=sha256:cbedb772ed74ff5be440fa8eee9bd49f64f6e3fc09436d9c7d8f1c287b121d77 \
|
| 203 |
+
--hash=sha256:cf9022ef053f2694e31d630feaacb21ea24224be1c3ad0520b13d844274614fd \
|
| 204 |
+
--hash=sha256:d002b6f00d73d69333dac9d0b8d5e84d9724ff9ef044fd63c5986e62b7c9e1b1 \
|
| 205 |
+
--hash=sha256:d06bb1f751ba5d417047db62bca3c8fde202b8c11fb50742ab3ab962c81e8216 \
|
| 206 |
+
--hash=sha256:d304906ecc71672e9c89e87c4675dc5c2645e1f4269a5063b99b0bb29f232d13 \
|
| 207 |
+
--hash=sha256:e4e6b05a45525357e382909a4c1600444e2a45b4795163d3b22669285591c1ae \
|
| 208 |
+
--hash=sha256:e74a9a0f5e3fff48fb5a7f2fd2b9b70a3fe014a67522f79b7cca4c0c7e43c9ae \
|
| 209 |
+
--hash=sha256:ea37e7b45949df430fe649e5de8351c423430046a2af20b1c1961cae3afcda77 \
|
| 210 |
+
--hash=sha256:f64836de09927cba6f79dcd00fdd7d5329f3fccc633468507079c829ca4db4e3 \
|
| 211 |
+
--hash=sha256:fd6ec6be509c787f1caf6b247f0b1ca598bef13f4ddeaa126b7658215529ba0f \
|
| 212 |
+
--hash=sha256:fd914713266421b7536de2bfa8181aa8c699432b6763a0ea64195ebe28bff6a9 \
|
| 213 |
+
--hash=sha256:fde6c716d51c04b1c25d0b90364d0be954624a0ee9d60e23e850e8d48353d07a
|
| 214 |
+
# via matplotlib
|
| 215 |
+
cycler==0.12.1 \
|
| 216 |
+
--hash=sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30 \
|
| 217 |
+
--hash=sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c
|
| 218 |
+
# via matplotlib
|
| 219 |
+
debugpy==1.8.17 \
|
| 220 |
+
--hash=sha256:045290c010bcd2d82bc97aa2daf6837443cd52f6328592698809b4549babcee1 \
|
| 221 |
+
--hash=sha256:3bea3b0b12f3946e098cce9b43c3c46e317b567f79570c3f43f0b96d00788088 \
|
| 222 |
+
--hash=sha256:5c59b74aa5630f3a5194467100c3b3d1c77898f9ab27e3f7dc5d40fc2f122670 \
|
| 223 |
+
--hash=sha256:60c7dca6571efe660ccb7a9508d73ca14b8796c4ed484c2002abba714226cfef \
|
| 224 |
+
--hash=sha256:6c5cd6f009ad4fca8e33e5238210dc1e5f42db07d4b6ab21ac7ffa904a196420 \
|
| 225 |
+
--hash=sha256:857c1dd5d70042502aef1c6d1c2801211f3ea7e56f75e9c335f434afb403e464 \
|
| 226 |
+
--hash=sha256:893cba7bb0f55161de4365584b025f7064e1f88913551bcd23be3260b231429c \
|
| 227 |
+
--hash=sha256:b69b6bd9dba6a03632534cdf67c760625760a215ae289f7489a452af1031fe1f \
|
| 228 |
+
--hash=sha256:e34ee844c2f17b18556b5bbe59e1e2ff4e86a00282d2a46edab73fd7f18f4a83 \
|
| 229 |
+
--hash=sha256:fd723b47a8c08892b1a16b2c6239a8b96637c62a59b94bb5dab4bac592a58a8e
|
| 230 |
+
# via ipykernel
|
| 231 |
+
decorator==5.2.1 \
|
| 232 |
+
--hash=sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360 \
|
| 233 |
+
--hash=sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a
|
| 234 |
+
# via ipython
|
| 235 |
+
defusedxml==0.7.1 \
|
| 236 |
+
--hash=sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69 \
|
| 237 |
+
--hash=sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61
|
| 238 |
+
# via nbconvert
|
| 239 |
+
executing==2.2.1 \
|
| 240 |
+
--hash=sha256:3632cc370565f6648cc328b32435bd120a1e4ebb20c77e3fdde9a13cd1e533c4 \
|
| 241 |
+
--hash=sha256:760643d3452b4d777d295bb167ccc74c64a81df23fb5e08eff250c425a4b2017
|
| 242 |
+
# via stack-data
|
| 243 |
+
fastjsonschema==2.21.2 \
|
| 244 |
+
--hash=sha256:1c797122d0a86c5cace2e54bf4e819c36223b552017172f32c5c024a6b77e463 \
|
| 245 |
+
--hash=sha256:b1eb43748041c880796cd077f1a07c3d94e93ae84bba5ed36800a33554ae05de
|
| 246 |
+
# via nbformat
|
| 247 |
+
fonttools==4.60.1 \
|
| 248 |
+
--hash=sha256:022beaea4b73a70295b688f817ddc24ed3e3418b5036ffcd5658141184ef0d0c \
|
| 249 |
+
--hash=sha256:026290e4ec76583881763fac284aca67365e0be9f13a7fb137257096114cb3bc \
|
| 250 |
+
--hash=sha256:1410155d0e764a4615774e5c2c6fc516259fe3eca5882f034eb9bfdbee056259 \
|
| 251 |
+
--hash=sha256:145daa14bf24824b677b9357c5e44fd8895c2a8f53596e1b9ea3496081dc692c \
|
| 252 |
+
--hash=sha256:154cb6ee417e417bf5f7c42fe25858c9140c26f647c7347c06f0cc2d47eff003 \
|
| 253 |
+
--hash=sha256:2299df884c11162617a66b7c316957d74a18e3758c0274762d2cc87df7bc0272 \
|
| 254 |
+
--hash=sha256:2409d5fb7b55fd70f715e6d34e7a6e4f7511b8ad29a49d6df225ee76da76dd77 \
|
| 255 |
+
--hash=sha256:5664fd1a9ea7f244487ac8f10340c4e37664675e8667d6fee420766e0fb3cf08 \
|
| 256 |
+
--hash=sha256:583b7f8e3c49486e4d489ad1deacfb8d5be54a8ef34d6df824f6a171f8511d99 \
|
| 257 |
+
--hash=sha256:66929e2ea2810c6533a5184f938502cfdaea4bc3efb7130d8cc02e1c1b4108d6 \
|
| 258 |
+
--hash=sha256:6f68576bb4bbf6060c7ab047b1574a1ebe5c50a17de62830079967b211059ebb \
|
| 259 |
+
--hash=sha256:875cb7764708b3132637f6c5fb385b16eeba0f7ac9fa45a69d35e09b47045801 \
|
| 260 |
+
--hash=sha256:8a44788d9d91df72d1a5eac49b31aeb887a5f4aab761b4cffc4196c74907ea85 \
|
| 261 |
+
--hash=sha256:906306ac7afe2156fcf0042173d6ebbb05416af70f6b370967b47f8f00103bbb \
|
| 262 |
+
--hash=sha256:9d0ced62b59e0430b3690dbc5373df1c2aa7585e9a8ce38eff87f0fd993c5b01 \
|
| 263 |
+
--hash=sha256:a184b2ea57b13680ab6d5fbde99ccef152c95c06746cb7718c583abd8f945ccc \
|
| 264 |
+
--hash=sha256:a3db56f153bd4c5c2b619ab02c5db5192e222150ce5a1bc10f16164714bc39ac \
|
| 265 |
+
--hash=sha256:a884aef09d45ba1206712c7dbda5829562d3fea7726935d3289d343232ecb0d3 \
|
| 266 |
+
--hash=sha256:b33a7884fabd72bdf5f910d0cf46be50dce86a0362a65cfc746a4168c67eb96c \
|
| 267 |
+
--hash=sha256:b6379e7546ba4ae4b18f8ae2b9bc5960936007a1c0e30b342f662577e8bc3299 \
|
| 268 |
+
--hash=sha256:c8651e0d4b3bdeda6602b85fdc2abbefc1b41e573ecb37b6779c4ca50753a199 \
|
| 269 |
+
--hash=sha256:e852d9dda9f93ad3651ae1e3bb770eac544ec93c3807888798eccddf84596537 \
|
| 270 |
+
--hash=sha256:eedacb5c5d22b7097482fa834bda0dafa3d914a4e829ec83cdea2a01f8c813c4 \
|
| 271 |
+
--hash=sha256:ef00af0439ebfee806b25f24c8f92109157ff3fac5731dc7867957812e87b8d9 \
|
| 272 |
+
--hash=sha256:f0e8817c7d1a0c2eedebf57ef9a9896f3ea23324769a9a2061a80fe8852705ed \
|
| 273 |
+
--hash=sha256:f3d5be054c461d6a2268831f04091dc82753176f6ea06dc6047a5e168265a987
|
| 274 |
+
# via matplotlib
|
| 275 |
+
fqdn==1.5.1 \
|
| 276 |
+
--hash=sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f \
|
| 277 |
+
--hash=sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014
|
| 278 |
+
# via jsonschema
|
| 279 |
+
h11==0.16.0 \
|
| 280 |
+
--hash=sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1 \
|
| 281 |
+
--hash=sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86
|
| 282 |
+
# via httpcore
|
| 283 |
+
httpcore==1.0.9 \
|
| 284 |
+
--hash=sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55 \
|
| 285 |
+
--hash=sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8
|
| 286 |
+
# via httpx
|
| 287 |
+
httpx==0.28.1 \
|
| 288 |
+
--hash=sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc \
|
| 289 |
+
--hash=sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad
|
| 290 |
+
# via jupyterlab
|
| 291 |
+
idna==3.11 \
|
| 292 |
+
--hash=sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea \
|
| 293 |
+
--hash=sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902
|
| 294 |
+
# via
|
| 295 |
+
# anyio
|
| 296 |
+
# httpx
|
| 297 |
+
# jsonschema
|
| 298 |
+
# requests
|
| 299 |
+
imbalanced-learn==0.14.0 \
|
| 300 |
+
--hash=sha256:22b9ba6dbd681a9ec613cd6e08c21d39639fb5ccbf2a3c991f9c36415b70522c \
|
| 301 |
+
--hash=sha256:8a8700c02ca185e113064815513f990fbf84eb4e7701f1d4e944ce67fb259a60
|
| 302 |
+
# via classification-informations
|
| 303 |
+
ipykernel==7.1.0 \
|
| 304 |
+
--hash=sha256:58a3fc88533d5930c3546dc7eac66c6d288acde4f801e2001e65edc5dc9cf0db \
|
| 305 |
+
--hash=sha256:763b5ec6c5b7776f6a8d7ce09b267693b4e5ce75cb50ae696aaefb3c85e1ea4c
|
| 306 |
+
# via
|
| 307 |
+
# classification-informations
|
| 308 |
+
# jupyter
|
| 309 |
+
# jupyter-console
|
| 310 |
+
# jupyterlab
|
| 311 |
+
ipython==9.6.0 \
|
| 312 |
+
--hash=sha256:5603d6d5d356378be5043e69441a072b50a5b33b4503428c77b04cb8ce7bc731 \
|
| 313 |
+
--hash=sha256:5f77efafc886d2f023442479b8149e7d86547ad0a979e9da9f045d252f648196
|
| 314 |
+
# via
|
| 315 |
+
# ipykernel
|
| 316 |
+
# ipywidgets
|
| 317 |
+
# jupyter-console
|
| 318 |
+
ipython-pygments-lexers==1.1.1 \
|
| 319 |
+
--hash=sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81 \
|
| 320 |
+
--hash=sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c
|
| 321 |
+
# via ipython
|
| 322 |
+
ipywidgets==8.1.8 \
|
| 323 |
+
--hash=sha256:61f969306b95f85fba6b6986b7fe45d73124d1d9e3023a8068710d47a22ea668 \
|
| 324 |
+
--hash=sha256:ecaca67aed704a338f88f67b1181b58f821ab5dc89c1f0f5ef99db43c1c2921e
|
| 325 |
+
# via jupyter
|
| 326 |
+
isoduration==20.11.0 \
|
| 327 |
+
--hash=sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9 \
|
| 328 |
+
--hash=sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042
|
| 329 |
+
# via jsonschema
|
| 330 |
+
jedi==0.19.2 \
|
| 331 |
+
--hash=sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0 \
|
| 332 |
+
--hash=sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9
|
| 333 |
+
# via ipython
|
| 334 |
+
jinja2==3.1.6 \
|
| 335 |
+
--hash=sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d \
|
| 336 |
+
--hash=sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67
|
| 337 |
+
# via
|
| 338 |
+
# jupyter-server
|
| 339 |
+
# jupyterlab
|
| 340 |
+
# jupyterlab-server
|
| 341 |
+
# nbconvert
|
| 342 |
+
joblib==1.5.2 \
|
| 343 |
+
--hash=sha256:3faa5c39054b2f03ca547da9b2f52fde67c06240c31853f306aea97f13647b55 \
|
| 344 |
+
--hash=sha256:4e1f0bdbb987e6d843c70cf43714cb276623def372df3c22fe5266b2670bc241
|
| 345 |
+
# via
|
| 346 |
+
# imbalanced-learn
|
| 347 |
+
# scikit-learn
|
| 348 |
+
json5==0.12.1 \
|
| 349 |
+
--hash=sha256:b2743e77b3242f8d03c143dd975a6ec7c52e2f2afe76ed934e53503dd4ad4990 \
|
| 350 |
+
--hash=sha256:d9c9b3bc34a5f54d43c35e11ef7cb87d8bdd098c6ace87117a7b7e83e705c1d5
|
| 351 |
+
# via jupyterlab-server
|
| 352 |
+
jsonpointer==3.0.0 \
|
| 353 |
+
--hash=sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942 \
|
| 354 |
+
--hash=sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef
|
| 355 |
+
# via jsonschema
|
| 356 |
+
jsonschema==4.25.1 \
|
| 357 |
+
--hash=sha256:3fba0169e345c7175110351d456342c364814cfcf3b964ba4587f22915230a63 \
|
| 358 |
+
--hash=sha256:e4a9655ce0da0c0b67a085847e00a3a51449e1157f4f75e9fb5aa545e122eb85
|
| 359 |
+
# via
|
| 360 |
+
# jupyter-events
|
| 361 |
+
# jupyterlab-server
|
| 362 |
+
# nbformat
|
| 363 |
+
jsonschema-specifications==2025.9.1 \
|
| 364 |
+
--hash=sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe \
|
| 365 |
+
--hash=sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d
|
| 366 |
+
# via jsonschema
|
| 367 |
+
jupyter==1.1.1 \
|
| 368 |
+
--hash=sha256:7a59533c22af65439b24bbe60373a4e95af8f16ac65a6c00820ad378e3f7cc83 \
|
| 369 |
+
--hash=sha256:d55467bceabdea49d7e3624af7e33d59c37fff53ed3a350e1ac957bed731de7a
|
| 370 |
+
# via classification-informations
|
| 371 |
+
jupyter-client==8.6.3 \
|
| 372 |
+
--hash=sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419 \
|
| 373 |
+
--hash=sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f
|
| 374 |
+
# via
|
| 375 |
+
# ipykernel
|
| 376 |
+
# jupyter-console
|
| 377 |
+
# jupyter-server
|
| 378 |
+
# nbclient
|
| 379 |
+
jupyter-console==6.6.3 \
|
| 380 |
+
--hash=sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485 \
|
| 381 |
+
--hash=sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539
|
| 382 |
+
# via jupyter
|
| 383 |
+
jupyter-core==5.9.1 \
|
| 384 |
+
--hash=sha256:4d09aaff303b9566c3ce657f580bd089ff5c91f5f89cf7d8846c3cdf465b5508 \
|
| 385 |
+
--hash=sha256:ebf87fdc6073d142e114c72c9e29a9d7ca03fad818c5d300ce2adc1fb0743407
|
| 386 |
+
# via
|
| 387 |
+
# ipykernel
|
| 388 |
+
# jupyter-client
|
| 389 |
+
# jupyter-console
|
| 390 |
+
# jupyter-server
|
| 391 |
+
# jupyterlab
|
| 392 |
+
# nbclient
|
| 393 |
+
# nbconvert
|
| 394 |
+
# nbformat
|
| 395 |
+
jupyter-events==0.12.0 \
|
| 396 |
+
--hash=sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb \
|
| 397 |
+
--hash=sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b
|
| 398 |
+
# via jupyter-server
|
| 399 |
+
jupyter-lsp==2.3.0 \
|
| 400 |
+
--hash=sha256:458aa59339dc868fb784d73364f17dbce8836e906cd75fd471a325cba02e0245 \
|
| 401 |
+
--hash=sha256:e914a3cb2addf48b1c7710914771aaf1819d46b2e5a79b0f917b5478ec93f34f
|
| 402 |
+
# via jupyterlab
|
| 403 |
+
jupyter-server==2.17.0 \
|
| 404 |
+
--hash=sha256:c38ea898566964c888b4772ae1ed58eca84592e88251d2cfc4d171f81f7e99d5 \
|
| 405 |
+
--hash=sha256:e8cb9c7db4251f51ed307e329b81b72ccf2056ff82d50524debde1ee1870e13f
|
| 406 |
+
# via
|
| 407 |
+
# jupyter-lsp
|
| 408 |
+
# jupyterlab
|
| 409 |
+
# jupyterlab-server
|
| 410 |
+
# notebook
|
| 411 |
+
# notebook-shim
|
| 412 |
+
jupyter-server-terminals==0.5.3 \
|
| 413 |
+
--hash=sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa \
|
| 414 |
+
--hash=sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269
|
| 415 |
+
# via jupyter-server
|
| 416 |
+
jupyterlab==4.4.10 \
|
| 417 |
+
--hash=sha256:521c017508af4e1d6d9d8a9d90f47a11c61197ad63b2178342489de42540a615 \
|
| 418 |
+
--hash=sha256:65939ab4c8dcd0c42185c2d0d1a9d60b254dc8c46fc4fdb286b63c51e9358e07
|
| 419 |
+
# via
|
| 420 |
+
# jupyter
|
| 421 |
+
# notebook
|
| 422 |
+
jupyterlab-pygments==0.3.0 \
|
| 423 |
+
--hash=sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d \
|
| 424 |
+
--hash=sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780
|
| 425 |
+
# via nbconvert
|
| 426 |
+
jupyterlab-server==2.28.0 \
|
| 427 |
+
--hash=sha256:35baa81898b15f93573e2deca50d11ac0ae407ebb688299d3a5213265033712c \
|
| 428 |
+
--hash=sha256:e4355b148fdcf34d312bbbc80f22467d6d20460e8b8736bf235577dd18506968
|
| 429 |
+
# via
|
| 430 |
+
# jupyterlab
|
| 431 |
+
# notebook
|
| 432 |
+
jupyterlab-widgets==3.0.16 \
|
| 433 |
+
--hash=sha256:423da05071d55cf27a9e602216d35a3a65a3e41cdf9c5d3b643b814ce38c19e0 \
|
| 434 |
+
--hash=sha256:45fa36d9c6422cf2559198e4db481aa243c7a32d9926b500781c830c80f7ecf8
|
| 435 |
+
# via ipywidgets
|
| 436 |
+
kiwisolver==1.4.9 \
|
| 437 |
+
--hash=sha256:0749fd8f4218ad2e851e11cc4dc05c7cbc0cbc4267bdfdb31782e65aace4ee9c \
|
| 438 |
+
--hash=sha256:0763515d4df10edf6d06a3c19734e2566368980d21ebec439f33f9eb936c07b7 \
|
| 439 |
+
--hash=sha256:0856e241c2d3df4efef7c04a1e46b1936b6120c9bcf36dd216e3acd84bc4fb21 \
|
| 440 |
+
--hash=sha256:0ab74e19f6a2b027ea4f845a78827969af45ce790e6cb3e1ebab71bdf9f215ff \
|
| 441 |
+
--hash=sha256:0e4e2bf29574a6a7b7f6cb5fa69293b9f96c928949ac4a53ba3f525dffb87f9c \
|
| 442 |
+
--hash=sha256:1a12cf6398e8a0a001a059747a1cbf24705e18fe413bc22de7b3d15c67cffe3f \
|
| 443 |
+
--hash=sha256:1b11d6a633e4ed84fc0ddafd4ebfd8ea49b3f25082c04ad12b8315c11d504dc1 \
|
| 444 |
+
--hash=sha256:1fa333e8b2ce4d9660f2cda9c0e1b6bafcfb2457a9d259faa82289e73ec24891 \
|
| 445 |
+
--hash=sha256:2489e4e5d7ef9a1c300a5e0196e43d9c739f066ef23270607d45aba368b91f2d \
|
| 446 |
+
--hash=sha256:24c175051354f4a28c5d6a31c93906dc653e2bf234e8a4bbfb964892078898ce \
|
| 447 |
+
--hash=sha256:2635d352d67458b66fd0667c14cb1d4145e9560d503219034a18a87e971ce4f3 \
|
| 448 |
+
--hash=sha256:40092754720b174e6ccf9e845d0d8c7d8e12c3d71e7fc35f55f3813e96376f78 \
|
| 449 |
+
--hash=sha256:497d05f29a1300d14e02e6441cf0f5ee81c1ff5a304b0d9fb77423974684e08b \
|
| 450 |
+
--hash=sha256:4a48a2ce79d65d363597ef7b567ce3d14d68783d2b2263d98db3d9477805ba32 \
|
| 451 |
+
--hash=sha256:52a15b0f35dad39862d376df10c5230155243a2c1a436e39eb55623ccbd68185 \
|
| 452 |
+
--hash=sha256:5656aa670507437af0207645273ccdfee4f14bacd7f7c67a4306d0dcaeaf6eed \
|
| 453 |
+
--hash=sha256:5a0f2724dfd4e3b3ac5a82436a8e6fd16baa7d507117e4279b660fe8ca38a3a1 \
|
| 454 |
+
--hash=sha256:60c439763a969a6af93b4881db0eed8fadf93ee98e18cbc35bc8da868d0c4f0c \
|
| 455 |
+
--hash=sha256:61874cdb0a36016354853593cffc38e56fc9ca5aa97d2c05d3dcf6922cd55a11 \
|
| 456 |
+
--hash=sha256:72d0eb9fba308b8311685c2268cf7d0a0639a6cd027d8128659f72bdd8a024b4 \
|
| 457 |
+
--hash=sha256:767c23ad1c58c9e827b649a9ab7809fd5fd9db266a9cf02b0e926ddc2c680d58 \
|
| 458 |
+
--hash=sha256:77937e5e2a38a7b48eef0585114fe7930346993a88060d0bf886086d2aa49ef5 \
|
| 459 |
+
--hash=sha256:7cf974dd4e35fa315563ac99d6287a1024e4dc2077b8a7d7cd3d2fb65d283134 \
|
| 460 |
+
--hash=sha256:85bd218b5ecfbee8c8a82e121802dcb519a86044c9c3b2e4aef02fa05c6da370 \
|
| 461 |
+
--hash=sha256:92a2f997387a1b79a75e7803aa7ded2cfbe2823852ccf1ba3bcf613b62ae3197 \
|
| 462 |
+
--hash=sha256:9928fe1eb816d11ae170885a74d074f57af3a0d65777ca47e9aeb854a1fba386 \
|
| 463 |
+
--hash=sha256:9af39d6551f97d31a4deebeac6f45b156f9755ddc59c07b402c148f5dbb6482a \
|
| 464 |
+
--hash=sha256:a30fd6fdef1430fd9e1ba7b3398b5ee4e2887783917a687d86ba69985fb08748 \
|
| 465 |
+
--hash=sha256:a31d512c812daea6d8b3be3b2bfcbeb091dbb09177706569bcfc6240dcf8b41c \
|
| 466 |
+
--hash=sha256:a5d0432ccf1c7ab14f9949eec60c5d1f924f17c037e9f8b33352fa05799359b8 \
|
| 467 |
+
--hash=sha256:a60ea74330b91bd22a29638940d115df9dc00af5035a9a2a6ad9399ffb4ceca5 \
|
| 468 |
+
--hash=sha256:aedff62918805fb62d43a4aa2ecd4482c380dc76cd31bd7c8878588a61bd0369 \
|
| 469 |
+
--hash=sha256:b34e51affded8faee0dfdb705416153819d8ea9250bbbf7ea1b249bdeb5f1122 \
|
| 470 |
+
--hash=sha256:b67e6efbf68e077dd71d1a6b37e43e1a99d0bff1a3d51867d45ee8908b931098 \
|
| 471 |
+
--hash=sha256:bb4ae2b57fc1d8cbd1cf7b1d9913803681ffa903e7488012be5b76dedf49297f \
|
| 472 |
+
--hash=sha256:bdd1a81a1860476eb41ac4bc1e07b3f07259e6d55bbf739b79c8aaedcf512799 \
|
| 473 |
+
--hash=sha256:bfc08add558155345129c7803b3671cf195e6a56e7a12f3dde7c57d9b417f525 \
|
| 474 |
+
--hash=sha256:c3b22c26c6fd6811b0ae8363b95ca8ce4ea3c202d3d0975b2914310ceb1bcc4d \
|
| 475 |
+
--hash=sha256:cc9617b46837c6468197b5945e196ee9ca43057bb7d9d1ae688101e4e1dddf64 \
|
| 476 |
+
--hash=sha256:ce6a3a4e106cf35c2d9c4fa17c05ce0b180db622736845d4315519397a77beaf \
|
| 477 |
+
--hash=sha256:d0005b053977e7b43388ddec89fa567f43d4f6d5c2c0affe57de5ebf290dc552 \
|
| 478 |
+
--hash=sha256:d4188e73af84ca82468f09cadc5ac4db578109e52acb4518d8154698d3a87ca2 \
|
| 479 |
+
--hash=sha256:d75aa530ccfaa593da12834b86a0724f58bff12706659baa9227c2ccaa06264c \
|
| 480 |
+
--hash=sha256:d84cd4061ae292d8ac367b2c3fa3aad11cb8625a95d135fe93f286f914f3f5a6 \
|
| 481 |
+
--hash=sha256:d8aacd3d4b33b772542b2e01beb50187536967b514b00003bdda7589722d2a64 \
|
| 482 |
+
--hash=sha256:d976bbb382b202f71c67f77b0ac11244021cfa3f7dfd9e562eefcea2df711548 \
|
| 483 |
+
--hash=sha256:dba5ee5d3981160c28d5490f0d1b7ed730c22470ff7f6cc26cfcfaacb9896a07 \
|
| 484 |
+
--hash=sha256:dd0a578400839256df88c16abddf9ba14813ec5f21362e1fe65022e00c883d4d \
|
| 485 |
+
--hash=sha256:e2ea9f7ab7fbf18fffb1b5434ce7c69a07582f7acc7717720f1d69f3e806f90c \
|
| 486 |
+
--hash=sha256:e6b93f13371d341afee3be9f7c5964e3fe61d5fa30f6a30eb49856935dfe4fc3 \
|
| 487 |
+
--hash=sha256:efb3a45b35622bb6c16dbfab491a8f5a391fe0e9d45ef32f4df85658232ca0e2 \
|
| 488 |
+
--hash=sha256:f68e4f3eeca8fb22cc3d731f9715a13b652795ef657a13df1ad0c7dc0e9731df
|
| 489 |
+
# via matplotlib
|
| 490 |
+
lark==1.3.1 \
|
| 491 |
+
--hash=sha256:b426a7a6d6d53189d318f2b6236ab5d6429eaf09259f1ca33eb716eed10d2905 \
|
| 492 |
+
--hash=sha256:c629b661023a014c37da873b4ff58a817398d12635d3bbb2c5a03be7fe5d1e12
|
| 493 |
+
# via rfc3987-syntax
|
| 494 |
+
llvmlite==0.45.1 \
|
| 495 |
+
--hash=sha256:080e6f8d0778a8239cd47686d402cb66eb165e421efa9391366a9b7e5810a38b \
|
| 496 |
+
--hash=sha256:09430bb9d0bb58fc45a45a57c7eae912850bedc095cd0810a57de109c69e1c32 \
|
| 497 |
+
--hash=sha256:3aa3dfceda4219ae39cf18806c60eeb518c1680ff834b8b311bd784160b9ce40 \
|
| 498 |
+
--hash=sha256:57c48bf2e1083eedbc9406fb83c4e6483017879714916fe8be8a72a9672c995a \
|
| 499 |
+
--hash=sha256:c9f3cadee1630ce4ac18ea38adebf2a4f57a89bd2740ce83746876797f6e0bfb \
|
| 500 |
+
--hash=sha256:d9ea9e6f17569a4253515cc01dade70aba536476e3d750b2e18d81d7e670eb15
|
| 501 |
+
# via numba
|
| 502 |
+
markupsafe==3.0.3 \
|
| 503 |
+
--hash=sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf \
|
| 504 |
+
--hash=sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175 \
|
| 505 |
+
--hash=sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219 \
|
| 506 |
+
--hash=sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb \
|
| 507 |
+
--hash=sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6 \
|
| 508 |
+
--hash=sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab \
|
| 509 |
+
--hash=sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218 \
|
| 510 |
+
--hash=sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634 \
|
| 511 |
+
--hash=sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73 \
|
| 512 |
+
--hash=sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe \
|
| 513 |
+
--hash=sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa \
|
| 514 |
+
--hash=sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37 \
|
| 515 |
+
--hash=sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97 \
|
| 516 |
+
--hash=sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19 \
|
| 517 |
+
--hash=sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9 \
|
| 518 |
+
--hash=sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9 \
|
| 519 |
+
--hash=sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc \
|
| 520 |
+
--hash=sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4 \
|
| 521 |
+
--hash=sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354 \
|
| 522 |
+
--hash=sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698 \
|
| 523 |
+
--hash=sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9 \
|
| 524 |
+
--hash=sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc \
|
| 525 |
+
--hash=sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485 \
|
| 526 |
+
--hash=sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12 \
|
| 527 |
+
--hash=sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025 \
|
| 528 |
+
--hash=sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009 \
|
| 529 |
+
--hash=sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d \
|
| 530 |
+
--hash=sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5 \
|
| 531 |
+
--hash=sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f \
|
| 532 |
+
--hash=sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1 \
|
| 533 |
+
--hash=sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287 \
|
| 534 |
+
--hash=sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6 \
|
| 535 |
+
--hash=sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581 \
|
| 536 |
+
--hash=sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed \
|
| 537 |
+
--hash=sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026 \
|
| 538 |
+
--hash=sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676 \
|
| 539 |
+
--hash=sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795 \
|
| 540 |
+
--hash=sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5 \
|
| 541 |
+
--hash=sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d \
|
| 542 |
+
--hash=sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe \
|
| 543 |
+
--hash=sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda \
|
| 544 |
+
--hash=sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e \
|
| 545 |
+
--hash=sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737 \
|
| 546 |
+
--hash=sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523 \
|
| 547 |
+
--hash=sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50
|
| 548 |
+
# via
|
| 549 |
+
# jinja2
|
| 550 |
+
# nbconvert
|
| 551 |
+
matplotlib==3.10.7 \
|
| 552 |
+
--hash=sha256:07124afcf7a6504eafcb8ce94091c5898bbdd351519a1beb5c45f7a38c67e77f \
|
| 553 |
+
--hash=sha256:09d7945a70ea43bf9248f4b6582734c2fe726723204a76eca233f24cffc7ef67 \
|
| 554 |
+
--hash=sha256:1d9d3713a237970569156cfb4de7533b7c4eacdd61789726f444f96a0d28f57f \
|
| 555 |
+
--hash=sha256:1e4bbad66c177a8fdfa53972e5ef8be72a5f27e6a607cec0d8579abd0f3102b1 \
|
| 556 |
+
--hash=sha256:22df30ffaa89f6643206cf13877191c63a50e8f800b038bc39bee9d2d4957632 \
|
| 557 |
+
--hash=sha256:31963603041634ce1a96053047b40961f7a29eb8f9a62e80cc2c0427aa1d22a2 \
|
| 558 |
+
--hash=sha256:37a1fea41153dd6ee061d21ab69c9cf2cf543160b1b85d89cd3d2e2a7902ca4c \
|
| 559 |
+
--hash=sha256:4645fc5d9d20ffa3a39361fcdbcec731382763b623b72627806bf251b6388866 \
|
| 560 |
+
--hash=sha256:4a74f79fafb2e177f240579bc83f0b60f82cc47d2f1d260f422a0627207008ca \
|
| 561 |
+
--hash=sha256:5e38c2d581d62ee729a6e144c47a71b3f42fb4187508dbbf4fe71d5612c3433b \
|
| 562 |
+
--hash=sha256:702590829c30aada1e8cef0568ddbffa77ca747b4d6e36c6d173f66e301f89cc \
|
| 563 |
+
--hash=sha256:7146d64f561498764561e9cd0ed64fcf582e570fc519e6f521e2d0cfd43365e1 \
|
| 564 |
+
--hash=sha256:744991e0cc863dd669c8dc9136ca4e6e0082be2070b9d793cbd64bec872a6815 \
|
| 565 |
+
--hash=sha256:786656bb13c237bbcebcd402f65f44dd61ead60ee3deb045af429d889c8dbc67 \
|
| 566 |
+
--hash=sha256:90ad854c0a435da3104c01e2c6f0028d7e719b690998a2333d7218db80950722 \
|
| 567 |
+
--hash=sha256:9257be2f2a03415f9105c486d304a321168e61ad450f6153d77c69504ad764bb \
|
| 568 |
+
--hash=sha256:932c55d1fa7af4423422cb6a492a31cbcbdbe68fd1a9a3f545aa5e7a143b5355 \
|
| 569 |
+
--hash=sha256:a06ba7e2a2ef9131c79c49e63dad355d2d878413a0376c1727c8b9335ff731c7 \
|
| 570 |
+
--hash=sha256:aebed7b50aa6ac698c90f60f854b47e48cd2252b30510e7a1feddaf5a3f72cbf \
|
| 571 |
+
--hash=sha256:b3c4ea4948d93c9c29dc01c0c23eef66f2101bf75158c291b88de6525c55c3d1 \
|
| 572 |
+
--hash=sha256:b4d41379b05528091f00e1728004f9a8d7191260f3862178b88e8fd770206318 \
|
| 573 |
+
--hash=sha256:b69676845a0a66f9da30e87f48be36734d6748024b525ec4710be40194282c84 \
|
| 574 |
+
--hash=sha256:c17398b709a6cce3d9fdb1595c33e356d91c098cd9486cb2cc21ea2ea418e715 \
|
| 575 |
+
--hash=sha256:cb783436e47fcf82064baca52ce748af71725d0352e1d31564cbe9c95df92b9c \
|
| 576 |
+
--hash=sha256:d0b181e9fa8daf1d9f2d4c547527b167cb8838fc587deabca7b5c01f97199e84 \
|
| 577 |
+
--hash=sha256:d883460c43e8c6b173fef244a2341f7f7c0e9725c7fe68306e8e44ed9c8fb100 \
|
| 578 |
+
--hash=sha256:d8eb7194b084b12feb19142262165832fc6ee879b945491d1c3d4660748020c4 \
|
| 579 |
+
--hash=sha256:f79d5de970fc90cd5591f60053aecfce1fcd736e0303d9f0bf86be649fa68fb8 \
|
| 580 |
+
--hash=sha256:fba2974df0bf8ce3c995fa84b79cde38326e0f7b5409e7a3a481c1141340bcf7
|
| 581 |
+
# via
|
| 582 |
+
# classification-informations
|
| 583 |
+
# seaborn
|
| 584 |
+
matplotlib-inline==0.2.1 \
|
| 585 |
+
--hash=sha256:d56ce5156ba6085e00a9d54fead6ed29a9c47e215cd1bba2e976ef39f5710a76 \
|
| 586 |
+
--hash=sha256:e1ee949c340d771fc39e241ea75683deb94762c8fa5f2927ec57c83c4dffa9fe
|
| 587 |
+
# via
|
| 588 |
+
# ipykernel
|
| 589 |
+
# ipython
|
| 590 |
+
mistune==3.1.4 \
|
| 591 |
+
--hash=sha256:93691da911e5d9d2e23bc54472892aff676df27a75274962ff9edc210364266d \
|
| 592 |
+
--hash=sha256:b5a7f801d389f724ec702840c11d8fc48f2b33519102fc7ee739e8177b672164
|
| 593 |
+
# via nbconvert
|
| 594 |
+
nbclient==0.10.2 \
|
| 595 |
+
--hash=sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d \
|
| 596 |
+
--hash=sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193
|
| 597 |
+
# via nbconvert
|
| 598 |
+
nbconvert==7.16.6 \
|
| 599 |
+
--hash=sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b \
|
| 600 |
+
--hash=sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582
|
| 601 |
+
# via
|
| 602 |
+
# jupyter
|
| 603 |
+
# jupyter-server
|
| 604 |
+
nbformat==5.10.4 \
|
| 605 |
+
--hash=sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a \
|
| 606 |
+
--hash=sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b
|
| 607 |
+
# via
|
| 608 |
+
# jupyter-server
|
| 609 |
+
# nbclient
|
| 610 |
+
# nbconvert
|
| 611 |
+
nest-asyncio==1.6.0 \
|
| 612 |
+
--hash=sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe \
|
| 613 |
+
--hash=sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c
|
| 614 |
+
# via ipykernel
|
| 615 |
+
notebook==7.4.7 \
|
| 616 |
+
--hash=sha256:362b7c95527f7dd3c4c84d410b782872fd9c734fb2524c11dd92758527b6eda6 \
|
| 617 |
+
--hash=sha256:3f0a04027dfcee8a876de48fba13ab77ec8c12f72f848a222ed7f5081b9e342a
|
| 618 |
+
# via jupyter
|
| 619 |
+
notebook-shim==0.2.4 \
|
| 620 |
+
--hash=sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef \
|
| 621 |
+
--hash=sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb
|
| 622 |
+
# via
|
| 623 |
+
# jupyterlab
|
| 624 |
+
# notebook
|
| 625 |
+
numba==0.62.1 \
|
| 626 |
+
--hash=sha256:44a1412095534a26fb5da2717bc755b57da5f3053965128fe3dc286652cc6a92 \
|
| 627 |
+
--hash=sha256:728f91a874192df22d74e3fd42c12900b7ce7190b1aad3574c6c61b08313e4c5 \
|
| 628 |
+
--hash=sha256:7b774242aa890e34c21200a1fc62e5b5757d5286267e71103257f4e2af0d5161 \
|
| 629 |
+
--hash=sha256:8c9460b9e936c5bd2f0570e20a0a5909ee6e8b694fd958b210e3bde3a6dba2d7 \
|
| 630 |
+
--hash=sha256:b72489ba8411cc9fdcaa2458d8f7677751e94f0109eeb53e5becfdc818c64afb \
|
| 631 |
+
--hash=sha256:bbf3f88b461514287df66bc8d0307e949b09f2b6f67da92265094e8fa1282dd8
|
| 632 |
+
# via shap
|
| 633 |
+
numpy==2.3.4 \
|
| 634 |
+
--hash=sha256:035796aaaddfe2f9664b9a9372f089cfc88bd795a67bd1bfe15e6e770934cf64 \
|
| 635 |
+
--hash=sha256:043885b4f7e6e232d7df4f51ffdef8c36320ee9d5f227b380ea636722c7ed12e \
|
| 636 |
+
--hash=sha256:04a69abe45b49c5955923cf2c407843d1c85013b424ae8a560bba16c92fe44a0 \
|
| 637 |
+
--hash=sha256:0f2bcc76f1e05e5ab58893407c63d90b2029908fa41f9f1cc51eecce936c3365 \
|
| 638 |
+
--hash=sha256:15eea9f306b98e0be91eb344a94c0e630689ef302e10c2ce5f7e11905c704f9c \
|
| 639 |
+
--hash=sha256:15fb27364ed84114438fff8aaf998c9e19adbeba08c0b75409f8c452a8692c52 \
|
| 640 |
+
--hash=sha256:22758999b256b595cf0b1d102b133bb61866ba5ceecf15f759623b64c020c9ec \
|
| 641 |
+
--hash=sha256:2ec646892819370cf3558f518797f16597b4e4669894a2ba712caccc9da53f1f \
|
| 642 |
+
--hash=sha256:3634093d0b428e6c32c3a69b78e554f0cd20ee420dcad5a9f3b2a63762ce4197 \
|
| 643 |
+
--hash=sha256:3da3491cee49cf16157e70f607c03a217ea6647b1cea4819c4f48e53d49139b9 \
|
| 644 |
+
--hash=sha256:40cc556d5abbc54aabe2b1ae287042d7bdb80c08edede19f0c0afb36ae586f37 \
|
| 645 |
+
--hash=sha256:4ee6a571d1e4f0ea6d5f22d6e5fbd6ed1dc2b18542848e1e7301bd190500c9d7 \
|
| 646 |
+
--hash=sha256:56209416e81a7893036eea03abcb91c130643eb14233b2515c90dcac963fe99d \
|
| 647 |
+
--hash=sha256:5e199c087e2aa71c8f9ce1cb7a8e10677dc12457e7cc1be4798632da37c3e86e \
|
| 648 |
+
--hash=sha256:62b2198c438058a20b6704351b35a1d7db881812d8512d67a69c9de1f18ca05f \
|
| 649 |
+
--hash=sha256:6d9cd732068e8288dbe2717177320723ccec4fb064123f0caf9bbd90ab5be868 \
|
| 650 |
+
--hash=sha256:7c26b0b2bf58009ed1f38a641f3db4be8d960a417ca96d14e5b06df1506d41ff \
|
| 651 |
+
--hash=sha256:817e719a868f0dacde4abdfc5c1910b301877970195db9ab6a5e2c4bd5b121f7 \
|
| 652 |
+
--hash=sha256:81c3e6d8c97295a7360d367f9f8553973651b76907988bb6066376bc2252f24e \
|
| 653 |
+
--hash=sha256:838f045478638b26c375ee96ea89464d38428c69170360b23a1a50fa4baa3562 \
|
| 654 |
+
--hash=sha256:84f01a4d18b2cc4ade1814a08e5f3c907b079c847051d720fad15ce37aa930b6 \
|
| 655 |
+
--hash=sha256:85597b2d25ddf655495e2363fe044b0ae999b75bc4d630dc0d886484b03a5eb0 \
|
| 656 |
+
--hash=sha256:85d9fb2d8cd998c84d13a79a09cc0c1091648e848e4e6249b0ccd7f6b487fa26 \
|
| 657 |
+
--hash=sha256:85e071da78d92a214212cacea81c6da557cab307f2c34b5f85b628e94803f9c0 \
|
| 658 |
+
--hash=sha256:863e3b5f4d9915aaf1b8ec79ae560ad21f0b8d5e3adc31e73126491bb86dee1d \
|
| 659 |
+
--hash=sha256:86966db35c4040fdca64f0816a1c1dd8dbd027d90fca5a57e00e1ca4cd41b879 \
|
| 660 |
+
--hash=sha256:8b5a9a39c45d852b62693d9b3f3e0fe052541f804296ff401a72a1b60edafb29 \
|
| 661 |
+
--hash=sha256:8dc20bde86802df2ed8397a08d793da0ad7a5fd4ea3ac85d757bf5dd4ad7c252 \
|
| 662 |
+
--hash=sha256:962064de37b9aef801d33bc579690f8bfe6c5e70e29b61783f60bcba838a14d6 \
|
| 663 |
+
--hash=sha256:9cb177bc55b010b19798dc5497d540dea67fd13a8d9e882b2dae71de0cf09eb3 \
|
| 664 |
+
--hash=sha256:9d729d60f8d53a7361707f4b68a9663c968882dd4f09e0d58c044c8bf5faee7b \
|
| 665 |
+
--hash=sha256:a13fc473b6db0be619e45f11f9e81260f7302f8d180c49a22b6e6120022596b3 \
|
| 666 |
+
--hash=sha256:a700a4031bc0fd6936e78a752eefb79092cecad2599ea9c8039c548bc097f9bc \
|
| 667 |
+
--hash=sha256:a7d018bfedb375a8d979ac758b120ba846a7fe764911a64465fd87b8729f4a6a \
|
| 668 |
+
--hash=sha256:b6c231c9c2fadbae4011ca5e7e83e12dc4a5072f1a1d85a0a7b3ed754d145a40 \
|
| 669 |
+
--hash=sha256:bd0c630cf256b0a7fd9d0a11c9413b42fef5101219ce6ed5a09624f5a65392c7 \
|
| 670 |
+
--hash=sha256:c090d4860032b857d94144d1a9976b8e36709e40386db289aaf6672de2a81966 \
|
| 671 |
+
--hash=sha256:d5e081bc082825f8b139f9e9fe42942cb4054524598aaeb177ff476cc76d09d2 \
|
| 672 |
+
--hash=sha256:d7315ed1dab0286adca467377c8381cd748f3dc92235f22a7dfc42745644a96a \
|
| 673 |
+
--hash=sha256:e1708fac43ef8b419c975926ce1eaf793b0c13b7356cfab6ab0dc34c0a02ac0f \
|
| 674 |
+
--hash=sha256:e73d63fd04e3a9d6bc187f5455d81abfad05660b212c8804bf3b407e984cd2bc \
|
| 675 |
+
--hash=sha256:e8370eb6925bb8c1c4264fec52b0384b44f675f191df91cbe0140ec9f0955646 \
|
| 676 |
+
--hash=sha256:ecb63014bb7f4ce653f8be7f1df8cbc6093a5a2811211770f6606cc92b5a78fd \
|
| 677 |
+
--hash=sha256:fc8a63918b04b8571789688b2780ab2b4a33ab44bfe8ccea36d3eba51228c953 \
|
| 678 |
+
--hash=sha256:fea80f4f4cf83b54c3a051f2f727870ee51e22f0248d3114b8e755d160b38cfb
|
| 679 |
+
# via
|
| 680 |
+
# classification-informations
|
| 681 |
+
# contourpy
|
| 682 |
+
# imbalanced-learn
|
| 683 |
+
# matplotlib
|
| 684 |
+
# numba
|
| 685 |
+
# pandas
|
| 686 |
+
# scikit-learn
|
| 687 |
+
# scipy
|
| 688 |
+
# seaborn
|
| 689 |
+
# shap
|
| 690 |
+
packaging==25.0 \
|
| 691 |
+
--hash=sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484 \
|
| 692 |
+
--hash=sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f
|
| 693 |
+
# via
|
| 694 |
+
# ipykernel
|
| 695 |
+
# jupyter-events
|
| 696 |
+
# jupyter-server
|
| 697 |
+
# jupyterlab
|
| 698 |
+
# jupyterlab-server
|
| 699 |
+
# matplotlib
|
| 700 |
+
# nbconvert
|
| 701 |
+
# shap
|
| 702 |
+
pandas==2.3.3 \
|
| 703 |
+
--hash=sha256:0242fe9a49aa8b4d78a4fa03acb397a58833ef6199e9aa40a95f027bb3a1b6e7 \
|
| 704 |
+
--hash=sha256:1611aedd912e1ff81ff41c745822980c49ce4a7907537be8692c8dbc31924593 \
|
| 705 |
+
--hash=sha256:1b07204a219b3b7350abaae088f451860223a52cfb8a6c53358e7948735158e5 \
|
| 706 |
+
--hash=sha256:2462b1a365b6109d275250baaae7b760fd25c726aaca0054649286bcfbb3e8ec \
|
| 707 |
+
--hash=sha256:2e3ebdb170b5ef78f19bfb71b0dc5dc58775032361fa188e814959b74d726dd5 \
|
| 708 |
+
--hash=sha256:318d77e0e42a628c04dc56bcef4b40de67918f7041c2b061af1da41dcff670ac \
|
| 709 |
+
--hash=sha256:3869faf4bd07b3b66a9f462417d0ca3a9df29a9f6abd5d0d0dbab15dac7abe87 \
|
| 710 |
+
--hash=sha256:4e0a175408804d566144e170d0476b15d78458795bb18f1304fb94160cabf40c \
|
| 711 |
+
--hash=sha256:56851a737e3470de7fa88e6131f41281ed440d29a9268dcbf0002da5ac366713 \
|
| 712 |
+
--hash=sha256:6253c72c6a1d990a410bc7de641d34053364ef8bcd3126f7e7450125887dffe3 \
|
| 713 |
+
--hash=sha256:6435cb949cb34ec11cc9860246ccb2fdc9ecd742c12d3304989017d53f039a78 \
|
| 714 |
+
--hash=sha256:6d2cefc361461662ac48810cb14365a365ce864afe85ef1f447ff5a1e99ea81c \
|
| 715 |
+
--hash=sha256:74ecdf1d301e812db96a465a525952f4dde225fdb6d8e5a521d47e1f42041e21 \
|
| 716 |
+
--hash=sha256:75ea25f9529fdec2d2e93a42c523962261e567d250b0013b16210e1d40d7c2e5 \
|
| 717 |
+
--hash=sha256:900f47d8f20860de523a1ac881c4c36d65efcb2eb850e6948140fa781736e110 \
|
| 718 |
+
--hash=sha256:93c2d9ab0fc11822b5eece72ec9587e172f63cff87c00b062f6e37448ced4493 \
|
| 719 |
+
--hash=sha256:a21d830e78df0a515db2b3d2f5570610f5e6bd2e27749770e8bb7b524b89b450 \
|
| 720 |
+
--hash=sha256:a45c765238e2ed7d7c608fc5bc4a6f88b642f2f01e70c0c23d2224dd21829d86 \
|
| 721 |
+
--hash=sha256:bdcd9d1167f4885211e401b3036c0c8d9e274eee67ea8d0758a256d60704cfe8 \
|
| 722 |
+
--hash=sha256:c46467899aaa4da076d5abc11084634e2d197e9460643dd455ac3db5856b24d6 \
|
| 723 |
+
--hash=sha256:c4fc4c21971a1a9f4bdb4c73978c7f7256caa3e62b323f70d6cb80db583350bc \
|
| 724 |
+
--hash=sha256:d051c0e065b94b7a3cea50eb1ec32e912cd96dba41647eb24104b6c6c14c5788 \
|
| 725 |
+
--hash=sha256:e05e1af93b977f7eafa636d043f9f94c7ee3ac81af99c13508215942e64c993b \
|
| 726 |
+
--hash=sha256:e32e7cc9af0f1cc15548288a51a3b681cc2a219faa838e995f7dc53dbab1062d \
|
| 727 |
+
--hash=sha256:ee15f284898e7b246df8087fc82b87b01686f98ee67d85a17b7ab44143a3a9a0 \
|
| 728 |
+
--hash=sha256:ee67acbbf05014ea6c763beb097e03cd629961c8a632075eeb34247120abcb4b \
|
| 729 |
+
--hash=sha256:f8bfc0e12dc78f777f323f55c58649591b2cd0c43534e8355c51d3fede5f4dee
|
| 730 |
+
# via
|
| 731 |
+
# classification-informations
|
| 732 |
+
# seaborn
|
| 733 |
+
# shap
|
| 734 |
+
pandocfilters==1.5.1 \
|
| 735 |
+
--hash=sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e \
|
| 736 |
+
--hash=sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc
|
| 737 |
+
# via nbconvert
|
| 738 |
+
parso==0.8.5 \
|
| 739 |
+
--hash=sha256:034d7354a9a018bdce352f48b2a8a450f05e9d6ee85db84764e9b6bd96dafe5a \
|
| 740 |
+
--hash=sha256:646204b5ee239c396d040b90f9e272e9a8017c630092bf59980beb62fd033887
|
| 741 |
+
# via jedi
|
| 742 |
+
pexpect==4.9.0 ; sys_platform != 'emscripten' and sys_platform != 'win32' \
|
| 743 |
+
--hash=sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523 \
|
| 744 |
+
--hash=sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f
|
| 745 |
+
# via ipython
|
| 746 |
+
pillow==12.0.0 \
|
| 747 |
+
--hash=sha256:0869154a2d0546545cde61d1789a6524319fc1897d9ee31218eae7a60ccc5643 \
|
| 748 |
+
--hash=sha256:0b817e7035ea7f6b942c13aa03bb554fc44fea70838ea21f8eb31c638326584e \
|
| 749 |
+
--hash=sha256:1979f4566bb96c1e50a62d9831e2ea2d1211761e5662afc545fa766f996632f6 \
|
| 750 |
+
--hash=sha256:1b1b133e6e16105f524a8dec491e0586d072948ce15c9b914e41cdadd209052b \
|
| 751 |
+
--hash=sha256:1ee80a59f6ce048ae13cda1abf7fbd2a34ab9ee7d401c46be3ca685d1999a399 \
|
| 752 |
+
--hash=sha256:266cd5f2b63ff316d5a1bba46268e603c9caf5606d44f38c2873c380950576ad \
|
| 753 |
+
--hash=sha256:26d9f7d2b604cd23aba3e9faf795787456ac25634d82cd060556998e39c6fa47 \
|
| 754 |
+
--hash=sha256:2c54c1a783d6d60595d3514f0efe9b37c8808746a66920315bfd34a938d7994b \
|
| 755 |
+
--hash=sha256:3830c769decf88f1289680a59d4f4c46c72573446352e2befec9a8512104fa52 \
|
| 756 |
+
--hash=sha256:38df9b4bfd3db902c9c2bd369bcacaf9d935b2fff73709429d95cc41554f7b3d \
|
| 757 |
+
--hash=sha256:3e42edad50b6909089750e65c91aa09aaf1e0a71310d383f11321b27c224ed8a \
|
| 758 |
+
--hash=sha256:4078242472387600b2ce8d93ade8899c12bf33fa89e55ec89fe126e9d6d5d9e9 \
|
| 759 |
+
--hash=sha256:4cc6b3b2efff105c6a1656cfe59da4fdde2cda9af1c5e0b58529b24525d0a098 \
|
| 760 |
+
--hash=sha256:4cf7fed4b4580601c4345ceb5d4cbf5a980d030fd5ad07c4d2ec589f95f09905 \
|
| 761 |
+
--hash=sha256:5193fde9a5f23c331ea26d0cf171fbf67e3f247585f50c08b3e205c7aeb4589b \
|
| 762 |
+
--hash=sha256:58eea5ebe51504057dd95c5b77d21700b77615ab0243d8152793dc00eb4faf01 \
|
| 763 |
+
--hash=sha256:5d5c411a8eaa2299322b647cd932586b1427367fd3184ffbb8f7a219ea2041ca \
|
| 764 |
+
--hash=sha256:6846bd2d116ff42cba6b646edf5bf61d37e5cbd256425fa089fee4ff5c07a99e \
|
| 765 |
+
--hash=sha256:6e51b71417049ad6ab14c49608b4a24d8fb3fe605e5dfabfe523b58064dc3d27 \
|
| 766 |
+
--hash=sha256:7438839e9e053ef79f7112c881cef684013855016f928b168b81ed5835f3e75e \
|
| 767 |
+
--hash=sha256:792a2c0be4dcc18af9d4a2dfd8a11a17d5e25274a1062b0ec1c2d79c76f3e7f8 \
|
| 768 |
+
--hash=sha256:7d87ef5795da03d742bf49439f9ca4d027cde49c82c5371ba52464aee266699a \
|
| 769 |
+
--hash=sha256:7fa22993bac7b77b78cae22bad1e2a987ddf0d9015c63358032f84a53f23cdc3 \
|
| 770 |
+
--hash=sha256:87d4f8125c9988bfbed67af47dd7a953e2fc7b0cc1e7800ec6d2080d490bb353 \
|
| 771 |
+
--hash=sha256:8d8ca2b210ada074d57fcee40c30446c9562e542fc46aedc19baf758a93532ee \
|
| 772 |
+
--hash=sha256:8dc232e39d409036af549c86f24aed8273a40ffa459981146829a324e0848b4b \
|
| 773 |
+
--hash=sha256:905b0365b210c73afb0ebe9101a32572152dfd1c144c7e28968a331b9217b94a \
|
| 774 |
+
--hash=sha256:99353a06902c2e43b43e8ff74ee65a7d90307d82370604746738a1e0661ccca7 \
|
| 775 |
+
--hash=sha256:99a7f72fb6249302aa62245680754862a44179b545ded638cf1fef59befb57ef \
|
| 776 |
+
--hash=sha256:9f0b04c6b8584c2c193babcccc908b38ed29524b29dd464bc8801bf10d746a3a \
|
| 777 |
+
--hash=sha256:a6597ff2b61d121172f5844b53f21467f7082f5fb385a9a29c01414463f93b07 \
|
| 778 |
+
--hash=sha256:a7921c5a6d31b3d756ec980f2f47c0cfdbce0fc48c22a39347a895f41f4a6ea4 \
|
| 779 |
+
--hash=sha256:afbefa430092f71a9593a99ab6a4e7538bc9eabbf7bf94f91510d3503943edc4 \
|
| 780 |
+
--hash=sha256:aff9e4d82d082ff9513bdd6acd4f5bd359f5b2c870907d2b0a9c5e10d40c88fe \
|
| 781 |
+
--hash=sha256:b2e4b27a6e15b04832fe9bf292b94b5ca156016bbc1ea9c2c20098a0320d6cf6 \
|
| 782 |
+
--hash=sha256:bde737cff1a975b70652b62d626f7785e0480918dece11e8fef3c0cf057351c3 \
|
| 783 |
+
--hash=sha256:beeae3f27f62308f1ddbcfb0690bf44b10732f2ef43758f169d5e9303165d3f9 \
|
| 784 |
+
--hash=sha256:c50f36a62a22d350c96e49ad02d0da41dbd17ddc2e29750dbdba4323f85eb4a5 \
|
| 785 |
+
--hash=sha256:c85de1136429c524e55cfa4e033b4a7940ac5c8ee4d9401cc2d1bf48154bbc7b \
|
| 786 |
+
--hash=sha256:c98fa880d695de164b4135a52fd2e9cd7b7c90a9d8ac5e9e443a24a95ef9248e \
|
| 787 |
+
--hash=sha256:d034140032870024e6b9892c692fe2968493790dd57208b2c37e3fb35f6df3ab \
|
| 788 |
+
--hash=sha256:d120c38a42c234dc9a8c5de7ceaaf899cf33561956acb4941653f8bdc657aa79 \
|
| 789 |
+
--hash=sha256:d4827615da15cd59784ce39d3388275ec093ae3ee8d7f0c089b76fa87af756c2 \
|
| 790 |
+
--hash=sha256:d52610d51e265a51518692045e372a4c363056130d922a7351429ac9f27e70b0 \
|
| 791 |
+
--hash=sha256:d7e091d464ac59d2c7ad8e7e08105eaf9dafbc3883fd7265ffccc2baad6ac925 \
|
| 792 |
+
--hash=sha256:e5d8efac84c9afcb40914ab49ba063d94f5dbdf5066db4482c66a992f47a3a3b \
|
| 793 |
+
--hash=sha256:f135c702ac42262573fe9714dfe99c944b4ba307af5eb507abef1667e2cbbced \
|
| 794 |
+
--hash=sha256:f13711b1a5ba512d647a0e4ba79280d3a9a045aaf7e0cc6fbe96b91d4cdf6b0c \
|
| 795 |
+
--hash=sha256:f4f1231b7dec408e8670264ce63e9c71409d9583dd21d32c163e25213ee2a344 \
|
| 796 |
+
--hash=sha256:fa3ed2a29a9e9d2d488b4da81dcb54720ac3104a20bf0bd273f1e4648aff5af9 \
|
| 797 |
+
--hash=sha256:fb3096c30df99fd01c7bf8e544f392103d0795b9f98ba71a8054bcbf56b255f1
|
| 798 |
+
# via matplotlib
|
| 799 |
+
platformdirs==4.5.0 \
|
| 800 |
+
--hash=sha256:70ddccdd7c99fc5942e9fc25636a8b34d04c24b335100223152c2803e4063312 \
|
| 801 |
+
--hash=sha256:e578a81bb873cbb89a41fcc904c7ef523cc18284b7e3b3ccf06aca1403b7ebd3
|
| 802 |
+
# via jupyter-core
|
| 803 |
+
prometheus-client==0.23.1 \
|
| 804 |
+
--hash=sha256:6ae8f9081eaaaf153a2e959d2e6c4f4fb57b12ef76c8c7980202f1e57b48b2ce \
|
| 805 |
+
--hash=sha256:dd1913e6e76b59cfe44e7a4b83e01afc9873c1bdfd2ed8739f1e76aeca115f99
|
| 806 |
+
# via jupyter-server
|
| 807 |
+
prompt-toolkit==3.0.52 \
|
| 808 |
+
--hash=sha256:28cde192929c8e7321de85de1ddbe736f1375148b02f2e17edd840042b1be855 \
|
| 809 |
+
--hash=sha256:9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955
|
| 810 |
+
# via
|
| 811 |
+
# ipython
|
| 812 |
+
# jupyter-console
|
| 813 |
+
psutil==7.1.3 \
|
| 814 |
+
--hash=sha256:0005da714eee687b4b8decd3d6cc7c6db36215c9e74e5ad2264b90c3df7d92dc \
|
| 815 |
+
--hash=sha256:1068c303be3a72f8e18e412c5b2a8f6d31750fb152f9cb106b54090296c9d251 \
|
| 816 |
+
--hash=sha256:18349c5c24b06ac5612c0428ec2a0331c26443d259e2a0144a9b24b4395b58fa \
|
| 817 |
+
--hash=sha256:19644c85dcb987e35eeeaefdc3915d059dac7bd1167cdcdbf27e0ce2df0c08c0 \
|
| 818 |
+
--hash=sha256:2bdbcd0e58ca14996a42adf3621a6244f1bb2e2e528886959c72cf1e326677ab \
|
| 819 |
+
--hash=sha256:31d77fcedb7529f27bb3a0472bea9334349f9a04160e8e6e5020f22c59893264 \
|
| 820 |
+
--hash=sha256:3792983e23b69843aea49c8f5b8f115572c5ab64c153bada5270086a2123c7e7 \
|
| 821 |
+
--hash=sha256:3bb428f9f05c1225a558f53e30ccbad9930b11c3fc206836242de1091d3e7dd3 \
|
| 822 |
+
--hash=sha256:56d974e02ca2c8eb4812c3f76c30e28836fffc311d55d979f1465c1feeb2b68b \
|
| 823 |
+
--hash=sha256:6c86281738d77335af7aec228328e944b30930899ea760ecf33a4dba66be5e74 \
|
| 824 |
+
--hash=sha256:8f33a3702e167783a9213db10ad29650ebf383946e91bc77f28a5eb083496bc9 \
|
| 825 |
+
--hash=sha256:95ef04cf2e5ba0ab9eaafc4a11eaae91b44f4ef5541acd2ee91d9108d00d59a7 \
|
| 826 |
+
--hash=sha256:ad81425efc5e75da3f39b3e636293360ad8d0b49bed7df824c79764fb4ba9b8b \
|
| 827 |
+
--hash=sha256:b403da1df4d6d43973dc004d19cee3b848e998ae3154cc8097d139b77156c353 \
|
| 828 |
+
--hash=sha256:bc31fa00f1fbc3c3802141eede66f3a2d51d89716a194bf2cd6fc68310a19880 \
|
| 829 |
+
--hash=sha256:bd0d69cee829226a761e92f28140bec9a5ee9d5b4fb4b0cc589068dbfff559b1 \
|
| 830 |
+
--hash=sha256:c525ffa774fe4496282fb0b1187725793de3e7c6b29e41562733cae9ada151ee \
|
| 831 |
+
--hash=sha256:f39c2c19fe824b47484b96f9692932248a54c43799a84282cfe58d05a6449efd \
|
| 832 |
+
--hash=sha256:fac9cd332c67f4422504297889da5ab7e05fd11e3c4392140f7370f4208ded1f
|
| 833 |
+
# via ipykernel
|
| 834 |
+
ptyprocess==0.7.0 ; os_name != 'nt' or (sys_platform != 'emscripten' and sys_platform != 'win32') \
|
| 835 |
+
--hash=sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35 \
|
| 836 |
+
--hash=sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220
|
| 837 |
+
# via
|
| 838 |
+
# pexpect
|
| 839 |
+
# terminado
|
| 840 |
+
pure-eval==0.2.3 \
|
| 841 |
+
--hash=sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0 \
|
| 842 |
+
--hash=sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42
|
| 843 |
+
# via stack-data
|
| 844 |
+
pycparser==2.23 ; implementation_name != 'PyPy' \
|
| 845 |
+
--hash=sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2 \
|
| 846 |
+
--hash=sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934
|
| 847 |
+
# via cffi
|
| 848 |
+
pygments==2.19.2 \
|
| 849 |
+
--hash=sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887 \
|
| 850 |
+
--hash=sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b
|
| 851 |
+
# via
|
| 852 |
+
# ipython
|
| 853 |
+
# ipython-pygments-lexers
|
| 854 |
+
# jupyter-console
|
| 855 |
+
# nbconvert
|
| 856 |
+
pyparsing==3.2.5 \
|
| 857 |
+
--hash=sha256:2df8d5b7b2802ef88e8d016a2eb9c7aeaa923529cd251ed0fe4608275d4105b6 \
|
| 858 |
+
--hash=sha256:e38a4f02064cf41fe6593d328d0512495ad1f3d8a91c4f73fc401b3079a59a5e
|
| 859 |
+
# via matplotlib
|
| 860 |
+
python-dateutil==2.9.0.post0 \
|
| 861 |
+
--hash=sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3 \
|
| 862 |
+
--hash=sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427
|
| 863 |
+
# via
|
| 864 |
+
# arrow
|
| 865 |
+
# jupyter-client
|
| 866 |
+
# matplotlib
|
| 867 |
+
# pandas
|
| 868 |
+
python-json-logger==4.0.0 \
|
| 869 |
+
--hash=sha256:af09c9daf6a813aa4cc7180395f50f2a9e5fa056034c9953aec92e381c5ba1e2 \
|
| 870 |
+
--hash=sha256:f58e68eb46e1faed27e0f574a55a0455eecd7b8a5b88b85a784519ba3cff047f
|
| 871 |
+
# via jupyter-events
|
| 872 |
+
pytz==2025.2 \
|
| 873 |
+
--hash=sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3 \
|
| 874 |
+
--hash=sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00
|
| 875 |
+
# via pandas
|
| 876 |
+
pywinpty==3.0.2 ; os_name == 'nt' \
|
| 877 |
+
--hash=sha256:1505cc4cb248af42cb6285a65c9c2086ee9e7e574078ee60933d5d7fa86fb004 \
|
| 878 |
+
--hash=sha256:18f78b81e4cfee6aabe7ea8688441d30247b73e52cd9657138015c5f4ee13a51 \
|
| 879 |
+
--hash=sha256:28297cecc37bee9f24d8889e47231972d6e9e84f7b668909de54f36ca785029a \
|
| 880 |
+
--hash=sha256:34b55ae9a1b671fe3eae071d86618110538e8eaad18fcb1531c0830b91a82767 \
|
| 881 |
+
--hash=sha256:663383ecfab7fc382cc97ea5c4f7f0bb32c2f889259855df6ea34e5df42d305b
|
| 882 |
+
# via
|
| 883 |
+
# jupyter-server
|
| 884 |
+
# jupyter-server-terminals
|
| 885 |
+
# terminado
|
| 886 |
+
pyyaml==6.0.3 \
|
| 887 |
+
--hash=sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c \
|
| 888 |
+
--hash=sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3 \
|
| 889 |
+
--hash=sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6 \
|
| 890 |
+
--hash=sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65 \
|
| 891 |
+
--hash=sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1 \
|
| 892 |
+
--hash=sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310 \
|
| 893 |
+
--hash=sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac \
|
| 894 |
+
--hash=sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9 \
|
| 895 |
+
--hash=sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7 \
|
| 896 |
+
--hash=sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35 \
|
| 897 |
+
--hash=sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb \
|
| 898 |
+
--hash=sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065 \
|
| 899 |
+
--hash=sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c \
|
| 900 |
+
--hash=sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c \
|
| 901 |
+
--hash=sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764 \
|
| 902 |
+
--hash=sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac \
|
| 903 |
+
--hash=sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8 \
|
| 904 |
+
--hash=sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3 \
|
| 905 |
+
--hash=sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5 \
|
| 906 |
+
--hash=sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702 \
|
| 907 |
+
--hash=sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788 \
|
| 908 |
+
--hash=sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba \
|
| 909 |
+
--hash=sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5 \
|
| 910 |
+
--hash=sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26 \
|
| 911 |
+
--hash=sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f \
|
| 912 |
+
--hash=sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b \
|
| 913 |
+
--hash=sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be \
|
| 914 |
+
--hash=sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c \
|
| 915 |
+
--hash=sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6
|
| 916 |
+
# via jupyter-events
|
| 917 |
+
pyzmq==27.1.0 \
|
| 918 |
+
--hash=sha256:01c0e07d558b06a60773744ea6251f769cd79a41a97d11b8bf4ab8f034b0424d \
|
| 919 |
+
--hash=sha256:08363b2011dec81c354d694bdecaef4770e0ae96b9afea70b3f47b973655cc05 \
|
| 920 |
+
--hash=sha256:0de3028d69d4cdc475bfe47a6128eb38d8bc0e8f4d69646adfbcd840facbac28 \
|
| 921 |
+
--hash=sha256:1779be8c549e54a1c38f805e56d2a2e5c009d26de10921d7d51cfd1c8d4632ea \
|
| 922 |
+
--hash=sha256:19c9468ae0437f8074af379e986c5d3d7d7bfe033506af442e8c879732bedbe0 \
|
| 923 |
+
--hash=sha256:1c179799b118e554b66da67d88ed66cd37a169f1f23b5d9f0a231b4e8d44a113 \
|
| 924 |
+
--hash=sha256:1f0b2a577fd770aa6f053211a55d1c47901f4d537389a034c690291485e5fe92 \
|
| 925 |
+
--hash=sha256:250e5436a4ba13885494412b3da5d518cd0d3a278a1ae640e113c073a5f88edd \
|
| 926 |
+
--hash=sha256:3837439b7f99e60312f0c926a6ad437b067356dc2bc2ec96eb395fd0fe804233 \
|
| 927 |
+
--hash=sha256:43ad9a73e3da1fab5b0e7e13402f0b2fb934ae1c876c51d0afff0e7c052eca31 \
|
| 928 |
+
--hash=sha256:452631b640340c928fa343801b0d07eb0c3789a5ffa843f6e1a9cee0ba4eb4fc \
|
| 929 |
+
--hash=sha256:544b4e3b7198dde4a62b8ff6685e9802a9a1ebf47e77478a5eb88eca2a82f2fd \
|
| 930 |
+
--hash=sha256:6bb54ca21bcfe361e445256c15eedf083f153811c37be87e0514934d6913061e \
|
| 931 |
+
--hash=sha256:6f3afa12c392f0a44a2414056d730eebc33ec0926aae92b5ad5cf26ebb6cc128 \
|
| 932 |
+
--hash=sha256:7200bb0f03345515df50d99d3db206a0a6bee1955fbb8c453c76f5bf0e08fb96 \
|
| 933 |
+
--hash=sha256:75a2f36223f0d535a0c919e23615fc85a1e23b71f40c7eb43d7b1dedb4d8f15f \
|
| 934 |
+
--hash=sha256:7ccc0700cfdf7bd487bea8d850ec38f204478681ea02a582a8da8171b7f90a1c \
|
| 935 |
+
--hash=sha256:8085a9fba668216b9b4323be338ee5437a235fe275b9d1610e422ccc279733e2 \
|
| 936 |
+
--hash=sha256:80d834abee71f65253c91540445d37c4c561e293ba6e741b992f20a105d69146 \
|
| 937 |
+
--hash=sha256:90e6e9441c946a8b0a667356f7078d96411391a3b8f80980315455574177ec97 \
|
| 938 |
+
--hash=sha256:93ad4b0855a664229559e45c8d23797ceac03183c7b6f5b4428152a6b06684a5 \
|
| 939 |
+
--hash=sha256:9ce490cf1d2ca2ad84733aa1d69ce6855372cb5ce9223802450c9b2a7cba0ccf \
|
| 940 |
+
--hash=sha256:ac0765e3d44455adb6ddbf4417dcce460fc40a05978c08efdf2948072f6db540 \
|
| 941 |
+
--hash=sha256:add071b2d25f84e8189aaf0882d39a285b42fa3853016ebab234a5e78c7a43db \
|
| 942 |
+
--hash=sha256:c65047adafe573ff023b3187bb93faa583151627bc9c51fc4fb2c561ed689d39 \
|
| 943 |
+
--hash=sha256:ce980af330231615756acd5154f29813d553ea555485ae712c491cd483df6b7a \
|
| 944 |
+
--hash=sha256:cedc4c68178e59a4046f97eca31b148ddcf51e88677de1ef4e78cf06c5376c9a \
|
| 945 |
+
--hash=sha256:cf44a7763aea9298c0aa7dbf859f87ed7012de8bda0f3977b6fb1d96745df856 \
|
| 946 |
+
--hash=sha256:d54530c8c8b5b8ddb3318f481297441af102517602b569146185fa10b63f4fa9 \
|
| 947 |
+
--hash=sha256:dc5dbf68a7857b59473f7df42650c621d7e8923fb03fa74a526890f4d33cc4d7 \
|
| 948 |
+
--hash=sha256:e343d067f7b151cfe4eb3bb796a7752c9d369eed007b91231e817071d2c2fec7 \
|
| 949 |
+
--hash=sha256:f30f395a9e6fbca195400ce833c731e7b64c3919aa481af4d88c3759e0cb7496 \
|
| 950 |
+
--hash=sha256:fbb4f2400bfda24f12f009cba62ad5734148569ff4949b1b6ec3b519444342e6
|
| 951 |
+
# via
|
| 952 |
+
# ipykernel
|
| 953 |
+
# jupyter-client
|
| 954 |
+
# jupyter-console
|
| 955 |
+
# jupyter-server
|
| 956 |
+
referencing==0.37.0 \
|
| 957 |
+
--hash=sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231 \
|
| 958 |
+
--hash=sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8
|
| 959 |
+
# via
|
| 960 |
+
# jsonschema
|
| 961 |
+
# jsonschema-specifications
|
| 962 |
+
# jupyter-events
|
| 963 |
+
requests==2.32.5 \
|
| 964 |
+
--hash=sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6 \
|
| 965 |
+
--hash=sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf
|
| 966 |
+
# via jupyterlab-server
|
| 967 |
+
rfc3339-validator==0.1.4 \
|
| 968 |
+
--hash=sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b \
|
| 969 |
+
--hash=sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa
|
| 970 |
+
# via
|
| 971 |
+
# jsonschema
|
| 972 |
+
# jupyter-events
|
| 973 |
+
rfc3986-validator==0.1.1 \
|
| 974 |
+
--hash=sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9 \
|
| 975 |
+
--hash=sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055
|
| 976 |
+
# via
|
| 977 |
+
# jsonschema
|
| 978 |
+
# jupyter-events
|
| 979 |
+
rfc3987-syntax==1.1.0 \
|
| 980 |
+
--hash=sha256:6c3d97604e4c5ce9f714898e05401a0445a641cfa276432b0a648c80856f6a3f \
|
| 981 |
+
--hash=sha256:717a62cbf33cffdd16dfa3a497d81ce48a660ea691b1ddd7be710c22f00b4a0d
|
| 982 |
+
# via jsonschema
|
| 983 |
+
rpds-py==0.28.0 \
|
| 984 |
+
--hash=sha256:04c1b207ab8b581108801528d59ad80aa83bb170b35b0ddffb29c20e411acdc1 \
|
| 985 |
+
--hash=sha256:0a403460c9dd91a7f23fc3188de6d8977f1d9603a351d5db6cf20aaea95b538d \
|
| 986 |
+
--hash=sha256:0cb7203c7bc69d7c1585ebb33a2e6074492d2fc21ad28a7b9d40457ac2a51ab7 \
|
| 987 |
+
--hash=sha256:1e8ee6413cfc677ce8898d9cde18cc3a60fc2ba756b0dec5b71eb6eb21c49fa1 \
|
| 988 |
+
--hash=sha256:2e42456917b6687215b3e606ab46aa6bca040c77af7df9a08a6dcfe8a4d10ca5 \
|
| 989 |
+
--hash=sha256:3114f4db69ac5a1f32e7e4d1cbbe7c8f9cf8217f78e6e002cedf2d54c2a548ed \
|
| 990 |
+
--hash=sha256:3aa4dc0fdab4a7029ac63959a3ccf4ed605fee048ba67ce89ca3168da34a1342 \
|
| 991 |
+
--hash=sha256:4b0cb8a906b1a0196b863d460c0222fb8ad0f34041568da5620f9799b83ccf0b \
|
| 992 |
+
--hash=sha256:4fe0438ac4a29a520ea94c8c7f1754cdd8feb1bc490dfda1bfd990072363d527 \
|
| 993 |
+
--hash=sha256:5338742f6ba7a51012ea470bd4dc600a8c713c0c72adaa0977a1b1f4327d6592 \
|
| 994 |
+
--hash=sha256:5a7306c19b19005ad98468fcefeb7100b19c79fc23a5f24a12e06d91181193fa \
|
| 995 |
+
--hash=sha256:5ae8ee156d6b586e4292491e885d41483136ab994e719a13458055bec14cf370 \
|
| 996 |
+
--hash=sha256:5b43c6a3726efd50f18d8120ec0551241c38785b68952d240c45ea553912ac41 \
|
| 997 |
+
--hash=sha256:5d3fd16b6dc89c73a4da0b4ac8b12a7ecc75b2864b95c9e5afed8003cb50a728 \
|
| 998 |
+
--hash=sha256:66e6fa8e075b58946e76a78e69e1a124a21d9a48a5b4766d15ba5b06869d1fa1 \
|
| 999 |
+
--hash=sha256:6796079e5d24fdaba6d49bda28e2c47347e89834678f2bc2c1b4fc1489c0fb01 \
|
| 1000 |
+
--hash=sha256:76500820c2af232435cbe215e3324c75b950a027134e044423f59f5b9a1ba515 \
|
| 1001 |
+
--hash=sha256:7a4e59c90d9c27c561eb3160323634a9ff50b04e4f7820600a2beb0ac90db578 \
|
| 1002 |
+
--hash=sha256:7a52a5169c664dfb495882adc75c304ae1d50df552fbd68e100fdc719dee4ff9 \
|
| 1003 |
+
--hash=sha256:7a69df082db13c7070f7b8b1f155fa9e687f1d6aefb7b0e3f7231653b79a067b \
|
| 1004 |
+
--hash=sha256:7b14b0c680286958817c22d76fcbca4800ddacef6f678f3a7c79a1fe7067fe37 \
|
| 1005 |
+
--hash=sha256:7b7d9d83c942855e4fdcfa75d4f96f6b9e272d42fffcb72cd4bb2577db2e2907 \
|
| 1006 |
+
--hash=sha256:8014045a15b4d2b3476f0a287fcc93d4f823472d7d1308d47884ecac9e612be3 \
|
| 1007 |
+
--hash=sha256:85beb8b3f45e4e32f6802fb6cd6b17f615ef6c6a52f265371fb916fae02814aa \
|
| 1008 |
+
--hash=sha256:8a358a32dd3ae50e933347889b6af9a1bdf207ba5d1a3f34e1a38cd3540e6733 \
|
| 1009 |
+
--hash=sha256:8aa23b6f0fc59b85b4c7d89ba2965af274346f738e8d9fc2455763602e62fd5f \
|
| 1010 |
+
--hash=sha256:8d252db6b1a78d0a3928b6190156042d54c93660ce4d98290d7b16b5296fb7cc \
|
| 1011 |
+
--hash=sha256:9a5690671cd672a45aa8616d7374fdf334a1b9c04a0cac3c854b1136e92374fe \
|
| 1012 |
+
--hash=sha256:9f1d92ecea4fa12f978a367c32a5375a1982834649cdb96539dcdc12e609ab1a \
|
| 1013 |
+
--hash=sha256:a2036d09b363aa36695d1cc1a97b36865597f4478470b0697b5ee9403f4fe399 \
|
| 1014 |
+
--hash=sha256:a6fe887c2c5c59413353b7c0caff25d0e566623501ccfff88957fa438a69377d \
|
| 1015 |
+
--hash=sha256:a805e9b3973f7e27f7cab63a6b4f61d90f2e5557cff73b6e97cd5b8540276d3d \
|
| 1016 |
+
--hash=sha256:abd4df20485a0983e2ca334a216249b6186d6e3c1627e106651943dbdb791aea \
|
| 1017 |
+
--hash=sha256:acbe5e8b1026c0c580d0321c8aae4b0a1e1676861d48d6e8c6586625055b606a \
|
| 1018 |
+
--hash=sha256:adc8aa88486857d2b35d75f0640b949759f79dc105f50aa2c27816b2e0dd749f \
|
| 1019 |
+
--hash=sha256:b1cde22f2c30ebb049a9e74c5374994157b9b70a16147d332f89c99c5960737a \
|
| 1020 |
+
--hash=sha256:b3072b16904d0b5572a15eb9d31c1954e0d3227a585fc1351aa9878729099d6c \
|
| 1021 |
+
--hash=sha256:b670c30fd87a6aec281c3c9896d3bae4b205fd75d79d06dc87c2503717e46092 \
|
| 1022 |
+
--hash=sha256:b8e1e9be4fa6305a16be628959188e4fd5cd6f1b0e724d63c6d8b2a8adf74ea6 \
|
| 1023 |
+
--hash=sha256:bbdc5640900a7dbf9dd707fe6388972f5bbd883633eb68b76591044cfe346f7e \
|
| 1024 |
+
--hash=sha256:bcf1d210dfee61a6c86551d67ee1031899c0fdbae88b2d44a569995d43797712 \
|
| 1025 |
+
--hash=sha256:bd3bbba5def70b16cd1c1d7255666aad3b290fbf8d0fe7f9f91abafb73611a91 \
|
| 1026 |
+
--hash=sha256:cf128350d384b777da0e68796afdcebc2e9f63f0e9f242217754e647f6d32491 \
|
| 1027 |
+
--hash=sha256:cf681ac76a60b667106141e11a92a3330890257e6f559ca995fbb5265160b56e \
|
| 1028 |
+
--hash=sha256:d2412be8d00a1b895f8ad827cc2116455196e20ed994bb704bf138fe91a42724 \
|
| 1029 |
+
--hash=sha256:d61b355c3275acb825f8777d6c4505f42b5007e357af500939d4a35b19177259 \
|
| 1030 |
+
--hash=sha256:d7366b6553cdc805abcc512b849a519167db8f5e5c3472010cd1228b224265cb \
|
| 1031 |
+
--hash=sha256:dcdcb890b3ada98a03f9f2bb108489cdc7580176cb73b4f2d789e9a1dac1d472 \
|
| 1032 |
+
--hash=sha256:e0a0311caedc8069d68fc2bf4c9019b58a2d5ce3cd7cb656c845f1615b577e1e \
|
| 1033 |
+
--hash=sha256:e1460ebde1bcf6d496d80b191d854adedcc619f84ff17dc1c6d550f58c9efbba \
|
| 1034 |
+
--hash=sha256:e3eb248f2feba84c692579257a043a7699e28a77d86c77b032c1d9fbb3f0219c \
|
| 1035 |
+
--hash=sha256:e5bbc701eff140ba0e872691d573b3d5d30059ea26e5785acba9132d10c8c31d \
|
| 1036 |
+
--hash=sha256:e5d9b86aa501fed9862a443c5c3116f6ead8bc9296185f369277c42542bd646b \
|
| 1037 |
+
--hash=sha256:e80848a71c78aa328fefaba9c244d588a342c8e03bda518447b624ea64d1ff56 \
|
| 1038 |
+
--hash=sha256:e9e184408a0297086f880556b6168fa927d677716f83d3472ea333b42171ee3b \
|
| 1039 |
+
--hash=sha256:edd267266a9b0448f33dc465a97cfc5d467594b600fe28e7fa2f36450e03053a \
|
| 1040 |
+
--hash=sha256:f274f56a926ba2dc02976ca5b11c32855cbd5925534e57cfe1fda64e04d1add2 \
|
| 1041 |
+
--hash=sha256:f296ea3054e11fc58ad42e850e8b75c62d9a93a9f981ad04b2e5ae7d2186ff9c \
|
| 1042 |
+
--hash=sha256:f586db2e209d54fe177e58e0bc4946bea5fb0102f150b1b2f13de03e1f0976f8
|
| 1043 |
+
# via
|
| 1044 |
+
# jsonschema
|
| 1045 |
+
# referencing
|
| 1046 |
+
scikit-learn==1.7.2 \
|
| 1047 |
+
--hash=sha256:0b7dacaa05e5d76759fb071558a8b5130f4845166d88654a0f9bdf3eb57851b7 \
|
| 1048 |
+
--hash=sha256:191e5550980d45449126e23ed1d5e9e24b2c68329ee1f691a3987476e115e09c \
|
| 1049 |
+
--hash=sha256:20e9e49ecd130598f1ca38a1d85090e1a600147b9c02fa6f15d69cb53d968fda \
|
| 1050 |
+
--hash=sha256:2a41e2a0ef45063e654152ec9d8bcfc39f7afce35b08902bfe290c2498a67a6a \
|
| 1051 |
+
--hash=sha256:502c18e39849c0ea1a5d681af1dbcf15f6cce601aebb657aabbfe84133c1907f \
|
| 1052 |
+
--hash=sha256:57dc4deb1d3762c75d685507fbd0bc17160144b2f2ba4ccea5dc285ab0d0e973 \
|
| 1053 |
+
--hash=sha256:63a9afd6f7b229aad94618c01c252ce9e6fa97918c5ca19c9a17a087d819440c \
|
| 1054 |
+
--hash=sha256:7a4c328a71785382fe3fe676a9ecf2c86189249beff90bf85e22bdb7efaf9ae0 \
|
| 1055 |
+
--hash=sha256:9656e4a53e54578ad10a434dc1f993330568cfee176dff07112b8785fb413106 \
|
| 1056 |
+
--hash=sha256:96dc05a854add0e50d3f47a1ef21a10a595016da5b007c7d9cd9d0bffd1fcc61 \
|
| 1057 |
+
--hash=sha256:98335fb98509b73385b3ab2bd0639b1f610541d3988ee675c670371d6a87aa7c \
|
| 1058 |
+
--hash=sha256:9acb6c5e867447b4e1390930e3944a005e2cb115922e693c08a323421a6966e8 \
|
| 1059 |
+
--hash=sha256:abebbd61ad9e1deed54cca45caea8ad5f79e1b93173dece40bb8e0c658dbe6fe \
|
| 1060 |
+
--hash=sha256:bb24510ed3f9f61476181e4db51ce801e2ba37541def12dc9333b946fc7a9cf8 \
|
| 1061 |
+
--hash=sha256:f95dc55b7902b91331fa4e5845dd5bde0580c9cd9612b1b2791b7e80c3d32615 \
|
| 1062 |
+
--hash=sha256:fa8f63940e29c82d1e67a45d5297bdebbcb585f5a5a50c4914cc2e852ab77f33
|
| 1063 |
+
# via
|
| 1064 |
+
# classification-informations
|
| 1065 |
+
# imbalanced-learn
|
| 1066 |
+
# shap
|
| 1067 |
+
scipy==1.16.3 \
|
| 1068 |
+
--hash=sha256:01e87659402762f43bd2fee13370553a17ada367d42e7487800bf2916535aecb \
|
| 1069 |
+
--hash=sha256:03192a35e661470197556de24e7cb1330d84b35b94ead65c46ad6f16f6b28f2a \
|
| 1070 |
+
--hash=sha256:062246acacbe9f8210de8e751b16fc37458213f124bef161a5a02c7a39284304 \
|
| 1071 |
+
--hash=sha256:0c3b4dd3d9b08dbce0f3440032c52e9e2ab9f96ade2d3943313dfe51a7056959 \
|
| 1072 |
+
--hash=sha256:0c623a54f7b79dd88ef56da19bc2873afec9673a48f3b85b18e4d402bdd29a5a \
|
| 1073 |
+
--hash=sha256:16b8bc35a4cc24db80a0ec836a9286d0e31b2503cb2fd7ff7fb0e0374a97081d \
|
| 1074 |
+
--hash=sha256:21d9d6b197227a12dcbf9633320a4e34c6b0e51c57268df255a0942983bac562 \
|
| 1075 |
+
--hash=sha256:2d1ae2cf0c350e7705168ff2429962a89ad90c2d49d1dd300686d8b2a5af22fc \
|
| 1076 |
+
--hash=sha256:3a4c460301fb2cffb7f88528f30b3127742cff583603aa7dc964a52c463b385d \
|
| 1077 |
+
--hash=sha256:4aff59800a3b7f786b70bfd6ab551001cb553244988d7d6b8299cb1ea653b353 \
|
| 1078 |
+
--hash=sha256:50a3dbf286dbc7d84f176f9a1574c705f277cb6565069f88f60db9eafdbe3ee2 \
|
| 1079 |
+
--hash=sha256:57d01cb6f85e34f0946b33caa66e892aae072b64b034183f3d87c4025802a119 \
|
| 1080 |
+
--hash=sha256:5803c5fadd29de0cf27fa08ccbfe7a9e5d741bf63e4ab1085437266f12460ff9 \
|
| 1081 |
+
--hash=sha256:6020470b9d00245926f2d5bb93b119ca0340f0d564eb6fbaad843eaebf9d690f \
|
| 1082 |
+
--hash=sha256:63d3cdacb8a824a295191a723ee5e4ea7768ca5ca5f2838532d9f2e2b3ce2135 \
|
| 1083 |
+
--hash=sha256:663b8d66a8748051c3ee9c96465fb417509315b99c71550fda2591d7dd634234 \
|
| 1084 |
+
--hash=sha256:7dc1360c06535ea6116a2220f760ae572db9f661aba2d88074fe30ec2aa1ff88 \
|
| 1085 |
+
--hash=sha256:7f68154688c515cdb541a31ef8eb66d8cd1050605be9dcd74199cbd22ac739bc \
|
| 1086 |
+
--hash=sha256:875555ce62743e1d54f06cdf22c1e0bc47b91130ac40fe5d783b6dfa114beeb6 \
|
| 1087 |
+
--hash=sha256:8b3c820ddb80029fe9f43d61b81d8b488d3ef8ca010d15122b152db77dc94c22 \
|
| 1088 |
+
--hash=sha256:8d09d72dc92742988b0e7750bddb8060b0c7079606c0d24a8cc8e9c9c11f9079 \
|
| 1089 |
+
--hash=sha256:96491a6a54e995f00a28a3c3badfff58fd093bf26cd5fb34a2188c8c756a3a2c \
|
| 1090 |
+
--hash=sha256:9b9c9c07b6d56a35777a1b4cc8966118fb16cfd8daf6743867d17d36cfad2d40 \
|
| 1091 |
+
--hash=sha256:aadd23f98f9cb069b3bd64ddc900c4d277778242e961751f77a8cb5c4b946fb0 \
|
| 1092 |
+
--hash=sha256:b7c5f1bda1354d6a19bc6af73a649f8285ca63ac6b52e64e658a5a11d4d69800 \
|
| 1093 |
+
--hash=sha256:b81c27fc41954319a943d43b20e07c40bdcd3ff7cf013f4fb86286faefe546c4 \
|
| 1094 |
+
--hash=sha256:bb61878c18a470021fb515a843dc7a76961a8daceaaaa8bad1332f1bf4b54657 \
|
| 1095 |
+
--hash=sha256:cd13e354df9938598af2be05822c323e97132d5e6306b83a3b4ee6724c6e522e \
|
| 1096 |
+
--hash=sha256:d2ec56337675e61b312179a1ad124f5f570c00f920cc75e1000025451b88241c \
|
| 1097 |
+
--hash=sha256:d3837938ae715fc0fe3c39c0202de3a8853aff22ca66781ddc2ade7554b7e2cc \
|
| 1098 |
+
--hash=sha256:d9f48cafc7ce94cf9b15c6bffdc443a81a27bf7075cf2dcd5c8b40f85d10c4e7 \
|
| 1099 |
+
--hash=sha256:da7763f55885045036fabcebd80144b757d3db06ab0861415d1c3b7c69042146 \
|
| 1100 |
+
--hash=sha256:e1d27cbcb4602680a49d787d90664fa4974063ac9d4134813332a8c53dbe667c \
|
| 1101 |
+
--hash=sha256:e5d42a9472e7579e473879a1990327830493a7047506d58d73fc429b84c1d49d \
|
| 1102 |
+
--hash=sha256:e7efa2681ea410b10dde31a52b18b0154d66f2485328830e45fdf183af5aefc6 \
|
| 1103 |
+
--hash=sha256:eab43fae33a0c39006a88096cd7b4f4ef545ea0447d250d5ac18202d40b6611d \
|
| 1104 |
+
--hash=sha256:f2622206f5559784fa5c4b53a950c3c7c1cf3e84ca1b9c4b6c03f062f289ca26 \
|
| 1105 |
+
--hash=sha256:f379b54b77a597aa7ee5e697df0d66903e41b9c85a6dd7946159e356319158e8 \
|
| 1106 |
+
--hash=sha256:f667a4542cc8917af1db06366d3f78a5c8e83badd56409f94d1eac8d8d9133fa \
|
| 1107 |
+
--hash=sha256:fb4b29f4cf8cc5a8d628bc8d8e26d12d7278cd1f219f22698a378c3d67db5e4b \
|
| 1108 |
+
--hash=sha256:ffa6eea95283b2b8079b821dc11f50a17d0571c92b43e2b5b12764dc5f9b285d
|
| 1109 |
+
# via
|
| 1110 |
+
# classification-informations
|
| 1111 |
+
# imbalanced-learn
|
| 1112 |
+
# scikit-learn
|
| 1113 |
+
# shap
|
| 1114 |
+
seaborn==0.13.2 \
|
| 1115 |
+
--hash=sha256:636f8336facf092165e27924f223d3c62ca560b1f2bb5dff7ab7fad265361987 \
|
| 1116 |
+
--hash=sha256:93e60a40988f4d65e9f4885df477e2fdaff6b73a9ded434c1ab356dd57eefff7
|
| 1117 |
+
# via classification-informations
|
| 1118 |
+
send2trash==1.8.3 \
|
| 1119 |
+
--hash=sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9 \
|
| 1120 |
+
--hash=sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf
|
| 1121 |
+
# via jupyter-server
|
| 1122 |
+
setuptools==80.9.0 \
|
| 1123 |
+
--hash=sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922 \
|
| 1124 |
+
--hash=sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c
|
| 1125 |
+
# via jupyterlab
|
| 1126 |
+
shap==0.49.1 \
|
| 1127 |
+
--hash=sha256:1114ecd804fff29f50d522ce6031082fcf42fe4a32fb1b5da233b2415d784c8c \
|
| 1128 |
+
--hash=sha256:333cd8e8c427badda92d5ada9e7aad1e3e1e8e7e0398da51a18b7ffb03514e45 \
|
| 1129 |
+
--hash=sha256:6af779344c23b12a47063aab7fc135fefbdb5849233c1813f11dd8cf2fc73bea \
|
| 1130 |
+
--hash=sha256:b440da658d9aee7711bf642c9b4826d81f588fb478cd9e90c068646e90f56669 \
|
| 1131 |
+
--hash=sha256:d8dfa5654eccf4d13dcb262a10314a4e0eb1060db842b2ef31e9fb0038168bc1 \
|
| 1132 |
+
--hash=sha256:ed3080030a6000d3737841c5770ed555b8a922b794fa0ba5aae1e45655eda1fa \
|
| 1133 |
+
--hash=sha256:f4faf61560f73a66f4f26bc027c91f8939201979c4db24949dca305ba0a2ad36
|
| 1134 |
+
# via classification-informations
|
| 1135 |
+
six==1.17.0 \
|
| 1136 |
+
--hash=sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 \
|
| 1137 |
+
--hash=sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81
|
| 1138 |
+
# via
|
| 1139 |
+
# python-dateutil
|
| 1140 |
+
# rfc3339-validator
|
| 1141 |
+
slicer==0.0.8 \
|
| 1142 |
+
--hash=sha256:2e7553af73f0c0c2d355f4afcc3ecf97c6f2156fcf4593955c3f56cf6c4d6eb7 \
|
| 1143 |
+
--hash=sha256:6c206258543aecd010d497dc2eca9d2805860a0b3758673903456b7df7934dc3
|
| 1144 |
+
# via shap
|
| 1145 |
+
sniffio==1.3.1 \
|
| 1146 |
+
--hash=sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2 \
|
| 1147 |
+
--hash=sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc
|
| 1148 |
+
# via anyio
|
| 1149 |
+
soupsieve==2.8 \
|
| 1150 |
+
--hash=sha256:0cc76456a30e20f5d7f2e14a98a4ae2ee4e5abdc7c5ea0aafe795f344bc7984c \
|
| 1151 |
+
--hash=sha256:e2dd4a40a628cb5f28f6d4b0db8800b8f581b65bb380b97de22ba5ca8d72572f
|
| 1152 |
+
# via beautifulsoup4
|
| 1153 |
+
stack-data==0.6.3 \
|
| 1154 |
+
--hash=sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9 \
|
| 1155 |
+
--hash=sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695
|
| 1156 |
+
# via ipython
|
| 1157 |
+
terminado==0.18.1 \
|
| 1158 |
+
--hash=sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0 \
|
| 1159 |
+
--hash=sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e
|
| 1160 |
+
# via
|
| 1161 |
+
# jupyter-server
|
| 1162 |
+
# jupyter-server-terminals
|
| 1163 |
+
threadpoolctl==3.6.0 \
|
| 1164 |
+
--hash=sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb \
|
| 1165 |
+
--hash=sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e
|
| 1166 |
+
# via
|
| 1167 |
+
# imbalanced-learn
|
| 1168 |
+
# scikit-learn
|
| 1169 |
+
tinycss2==1.4.0 \
|
| 1170 |
+
--hash=sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7 \
|
| 1171 |
+
--hash=sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289
|
| 1172 |
+
# via bleach
|
| 1173 |
+
tornado==6.5.2 \
|
| 1174 |
+
--hash=sha256:06ceb1300fd70cb20e43b1ad8aaee0266e69e7ced38fa910ad2e03285009ce7c \
|
| 1175 |
+
--hash=sha256:2436822940d37cde62771cff8774f4f00b3c8024fe482e16ca8387b8a2724db6 \
|
| 1176 |
+
--hash=sha256:583a52c7aa94ee046854ba81d9ebb6c81ec0fd30386d96f7640c96dad45a03ef \
|
| 1177 |
+
--hash=sha256:74db443e0f5251be86cbf37929f84d8c20c27a355dd452a5cfa2aada0d001ec4 \
|
| 1178 |
+
--hash=sha256:ab53c8f9a0fa351e2c0741284e06c7a45da86afb544133201c5cc8578eb076a0 \
|
| 1179 |
+
--hash=sha256:b0fe179f28d597deab2842b86ed4060deec7388f1fd9c1b4a41adf8af058907e \
|
| 1180 |
+
--hash=sha256:b186e85d1e3536d69583d2298423744740986018e393d0321df7340e71898882 \
|
| 1181 |
+
--hash=sha256:b5e735ab2889d7ed33b32a459cac490eda71a1ba6857b0118de476ab6c366c04 \
|
| 1182 |
+
--hash=sha256:c6f29e94d9b37a95013bb669616352ddb82e3bfe8326fccee50583caebc8a5f0 \
|
| 1183 |
+
--hash=sha256:d6c33dc3672e3a1f3618eb63b7ef4683a7688e7b9e6e8f0d9aa5726360a004af \
|
| 1184 |
+
--hash=sha256:e56a5af51cc30dd2cae649429af65ca2f6571da29504a07995175df14c18f35f \
|
| 1185 |
+
--hash=sha256:e792706668c87709709c18b353da1f7662317b563ff69f00bab83595940c7108
|
| 1186 |
+
# via
|
| 1187 |
+
# ipykernel
|
| 1188 |
+
# jupyter-client
|
| 1189 |
+
# jupyter-server
|
| 1190 |
+
# jupyterlab
|
| 1191 |
+
# notebook
|
| 1192 |
+
# terminado
|
| 1193 |
+
tqdm==4.67.1 \
|
| 1194 |
+
--hash=sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2 \
|
| 1195 |
+
--hash=sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2
|
| 1196 |
+
# via shap
|
| 1197 |
+
traitlets==5.14.3 \
|
| 1198 |
+
--hash=sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7 \
|
| 1199 |
+
--hash=sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f
|
| 1200 |
+
# via
|
| 1201 |
+
# ipykernel
|
| 1202 |
+
# ipython
|
| 1203 |
+
# ipywidgets
|
| 1204 |
+
# jupyter-client
|
| 1205 |
+
# jupyter-console
|
| 1206 |
+
# jupyter-core
|
| 1207 |
+
# jupyter-events
|
| 1208 |
+
# jupyter-server
|
| 1209 |
+
# jupyterlab
|
| 1210 |
+
# matplotlib-inline
|
| 1211 |
+
# nbclient
|
| 1212 |
+
# nbconvert
|
| 1213 |
+
# nbformat
|
| 1214 |
+
typing-extensions==4.15.0 \
|
| 1215 |
+
--hash=sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466 \
|
| 1216 |
+
--hash=sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548
|
| 1217 |
+
# via
|
| 1218 |
+
# beautifulsoup4
|
| 1219 |
+
# shap
|
| 1220 |
+
tzdata==2025.2 \
|
| 1221 |
+
--hash=sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8 \
|
| 1222 |
+
--hash=sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9
|
| 1223 |
+
# via
|
| 1224 |
+
# arrow
|
| 1225 |
+
# pandas
|
| 1226 |
+
uri-template==1.3.0 \
|
| 1227 |
+
--hash=sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7 \
|
| 1228 |
+
--hash=sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363
|
| 1229 |
+
# via jsonschema
|
| 1230 |
+
urllib3==2.5.0 \
|
| 1231 |
+
--hash=sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760 \
|
| 1232 |
+
--hash=sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc
|
| 1233 |
+
# via requests
|
| 1234 |
+
wcwidth==0.2.14 \
|
| 1235 |
+
--hash=sha256:4d478375d31bc5395a3c55c40ccdf3354688364cd61c4f6adacaa9215d0b3605 \
|
| 1236 |
+
--hash=sha256:a7bb560c8aee30f9957e5f9895805edd20602f2d7f720186dfd906e82b4982e1
|
| 1237 |
+
# via prompt-toolkit
|
| 1238 |
+
webcolors==25.10.0 \
|
| 1239 |
+
--hash=sha256:032c727334856fc0b968f63daa252a1ac93d33db2f5267756623c210e57a4f1d \
|
| 1240 |
+
--hash=sha256:62abae86504f66d0f6364c2a8520de4a0c47b80c03fc3a5f1815fedbef7c19bf
|
| 1241 |
+
# via jsonschema
|
| 1242 |
+
webencodings==0.5.1 \
|
| 1243 |
+
--hash=sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78 \
|
| 1244 |
+
--hash=sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923
|
| 1245 |
+
# via
|
| 1246 |
+
# bleach
|
| 1247 |
+
# tinycss2
|
| 1248 |
+
websocket-client==1.9.0 \
|
| 1249 |
+
--hash=sha256:9e813624b6eb619999a97dc7958469217c3176312b3a16a4bd1bc7e08a46ec98 \
|
| 1250 |
+
--hash=sha256:af248a825037ef591efbf6ed20cc5faa03d3b47b9e5a2230a529eeee1c1fc3ef
|
| 1251 |
+
# via jupyter-server
|
| 1252 |
+
widgetsnbextension==4.0.15 \
|
| 1253 |
+
--hash=sha256:8156704e4346a571d9ce73b84bee86a29906c9abfd7223b7228a28899ccf3366 \
|
| 1254 |
+
--hash=sha256:de8610639996f1567952d763a5a41af8af37f2575a41f9852a38f947eb82a3b9
|
| 1255 |
+
# via ipywidgets
|
src/__init__.py
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Point d'entrée simple : entraîne et sauvegarde le modèle """
|
| 2 |
+
from src.train_model import train_and_save
|
| 3 |
+
|
| 4 |
+
if __name__ == "__main__":
|
| 5 |
+
f1 = train_and_save()
|
| 6 |
+
print(f"Modèle entraîné et sauvegardé (models/model.joblib). F1 = {f1:.3f}")
|
src/api/schemas.py
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from typing import List
|
| 2 |
+
from pydantic import BaseModel
|
| 3 |
+
|
| 4 |
+
class EmployeeInput(BaseModel):
|
| 5 |
+
age: int
|
| 6 |
+
genre: str
|
| 7 |
+
revenu_mensuel: int
|
| 8 |
+
statut_marital: str
|
| 9 |
+
departement: str
|
| 10 |
+
poste: str
|
| 11 |
+
nombre_experiences_precedentes: int
|
| 12 |
+
annees_dans_le_poste_actuel: int
|
| 13 |
+
note_evaluation_precedente: int
|
| 14 |
+
note_evaluation_actuelle: int
|
| 15 |
+
heure_supplementaires: int
|
| 16 |
+
augementation_salaire_precedente: int
|
| 17 |
+
nombre_participation_pee: int
|
| 18 |
+
nb_formations_suivies: int
|
| 19 |
+
distance_domicile_travail: int
|
| 20 |
+
niveau_education: int
|
| 21 |
+
annees_depuis_la_derniere_promotion: int
|
| 22 |
+
annes_sous_responsable_actuel: int
|
| 23 |
+
satisfaction_globale: float
|
| 24 |
+
exp_moins_3_years: int
|
| 25 |
+
domaine_etude: str
|
| 26 |
+
frequence_deplacement: str
|
| 27 |
+
|
| 28 |
+
class PredictRequest(BaseModel):
|
| 29 |
+
inputs: List[EmployeeInput]
|
src/api/server.py
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from pathlib import Path
|
| 2 |
+
import joblib
|
| 3 |
+
import pandas as pd
|
| 4 |
+
from fastapi import FastAPI, HTTPException
|
| 5 |
+
from huggingface_hub import hf_hub_download
|
| 6 |
+
|
| 7 |
+
from .schemas import PredictRequest, EmployeeInput
|
| 8 |
+
|
| 9 |
+
THRESHOLD = 0.33
|
| 10 |
+
|
| 11 |
+
LOCAL_MODEL = Path("models/model.joblib")
|
| 12 |
+
HF_REPO_ID = "veranoscience/attrition-model"
|
| 13 |
+
HF_FILENAME = "model.joblib"
|
| 14 |
+
|
| 15 |
+
def load_pipeline():
|
| 16 |
+
if LOCAL_MODEL.exists():
|
| 17 |
+
return joblib.load(LOCAL_MODEL)
|
| 18 |
+
downloaded = hf_hub_download(repo_id=HF_REPO_ID, filename=HF_FILENAME)
|
| 19 |
+
return joblib.load(downloaded)
|
| 20 |
+
|
| 21 |
+
pipe = load_pipeline()
|
| 22 |
+
|
| 23 |
+
app = FastAPI(
|
| 24 |
+
title="Attrition API",
|
| 25 |
+
description="Prédiction de probabilité de démission (attrition) via un pipeline scikit-learn.",
|
| 26 |
+
version="0.1.0",
|
| 27 |
+
)
|
| 28 |
+
|
| 29 |
+
@app.get("/health")
|
| 30 |
+
def health():
|
| 31 |
+
src = str(LOCAL_MODEL) if LOCAL_MODEL.exists() else f"hub:{HF_REPO_ID}/{HF_FILENAME}"
|
| 32 |
+
return {"status": "ok", "model_source": src, "threshold": THRESHOLD}
|
| 33 |
+
|
| 34 |
+
@app.post("/predict_proba")
|
| 35 |
+
def predict_proba(req: PredictRequest):
|
| 36 |
+
try:
|
| 37 |
+
rows = [item.model_dump() for item in req.inputs]
|
| 38 |
+
X = pd.DataFrame(rows)
|
| 39 |
+
probas = pipe.predict_proba(X)[:, 1]
|
| 40 |
+
preds = (probas >= THRESHOLD).astype(int)
|
| 41 |
+
return {
|
| 42 |
+
"threshold": THRESHOLD,
|
| 43 |
+
"probas": [float(p) for p in probas],
|
| 44 |
+
"preds": preds.tolist(),
|
| 45 |
+
}
|
| 46 |
+
except Exception as e:
|
| 47 |
+
raise HTTPException(status_code=400, detail=f"Erreur de prédiction: {e}")
|
| 48 |
+
|
| 49 |
+
@app.post("/predict_one")
|
| 50 |
+
def predict_one(emp: EmployeeInput):
|
| 51 |
+
try:
|
| 52 |
+
X = pd.DataFrame([emp.model_dump()])
|
| 53 |
+
proba = float(pipe.predict_proba(X)[:, 1][0])
|
| 54 |
+
pred = int(proba >= THRESHOLD)
|
| 55 |
+
return {"threshold": THRESHOLD, "proba": proba, "pred": pred}
|
| 56 |
+
except Exception as e:
|
| 57 |
+
raise HTTPException(status_code=400, detail=f"Erreur de prédiction: {e}")
|
src/data_preparation.py
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Chargement & split des données traitées."""
|
| 2 |
+
from pathlib import Path
|
| 3 |
+
import pandas as pd
|
| 4 |
+
from sklearn.model_selection import train_test_split
|
| 5 |
+
|
| 6 |
+
|
| 7 |
+
def load_processed(path: str | Path = "data/processed/df_central_encode.csv") -> pd.DataFrame:
|
| 8 |
+
return pd.read_csv(Path(path))
|
| 9 |
+
|
| 10 |
+
|
| 11 |
+
def split_xy(
|
| 12 |
+
df: pd.DataFrame,
|
| 13 |
+
target: str = "attrition",
|
| 14 |
+
test_size: float = 0.2,
|
| 15 |
+
seed: int = 42,
|
| 16 |
+
):
|
| 17 |
+
X = df.drop(columns=[target])
|
| 18 |
+
y = df[target]
|
| 19 |
+
return train_test_split(
|
| 20 |
+
X,
|
| 21 |
+
y,
|
| 22 |
+
test_size=test_size,
|
| 23 |
+
stratify=y,
|
| 24 |
+
random_state=seed,
|
| 25 |
+
)
|
src/train_model.py
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Entraînement + sauvegarde du modèle final (RandomForest régularisé)."""
|
| 2 |
+
from pathlib import Path
|
| 3 |
+
import json
|
| 4 |
+
import joblib
|
| 5 |
+
import pandas as pd
|
| 6 |
+
from sklearn.ensemble import RandomForestClassifier
|
| 7 |
+
from sklearn.metrics import f1_score
|
| 8 |
+
from .data_preparation import load_processed, split_xy
|
| 9 |
+
|
| 10 |
+
# Le modèle final choisi
|
| 11 |
+
def build_model() -> RandomForestClassifier:
|
| 12 |
+
return RandomForestClassifier(
|
| 13 |
+
n_estimators=200,
|
| 14 |
+
class_weight="balanced",
|
| 15 |
+
max_depth=8,
|
| 16 |
+
min_samples_leaf=5,
|
| 17 |
+
min_samples_split=10,
|
| 18 |
+
max_features="sqrt",
|
| 19 |
+
n_jobs=-1,
|
| 20 |
+
random_state=42,
|
| 21 |
+
)
|
| 22 |
+
|
| 23 |
+
def train_and_save(models_dir: str | Path = "models",
|
| 24 |
+
data_path: str | Path = "data/processed/df_central_encode.csv",
|
| 25 |
+
target: str = "attrition") -> float:
|
| 26 |
+
df: pd.DataFrame = load_processed(data_path)
|
| 27 |
+
X_train, X_test, y_train, y_test = split_xy(df, target=target, test_size=0.2, seed=42)
|
| 28 |
+
|
| 29 |
+
model = build_model()
|
| 30 |
+
model.fit(X_train, y_train)
|
| 31 |
+
|
| 32 |
+
f1 = f1_score(y_test, model.predict(X_test))
|
| 33 |
+
|
| 34 |
+
# Sauvegardes
|
| 35 |
+
models_dir = Path(models_dir)
|
| 36 |
+
models_dir.mkdir(parents=True, exist_ok=True)
|
| 37 |
+
|
| 38 |
+
# 1) modèle
|
| 39 |
+
joblib.dump(model, models_dir / "model.joblib")
|
| 40 |
+
|
| 41 |
+
# 2) métadonnées utiles à l’inférence
|
| 42 |
+
meta = {
|
| 43 |
+
"feature_columns": list(X_train.columns),
|
| 44 |
+
"target": target,
|
| 45 |
+
"trained_on": str(data_path),
|
| 46 |
+
"metrics": {"f1_test": float(f1)},
|
| 47 |
+
"model": "RandomForestClassifier",
|
| 48 |
+
"params": {
|
| 49 |
+
"n_estimators": 200,
|
| 50 |
+
"class_weight": "balanced",
|
| 51 |
+
"max_depth": 8,
|
| 52 |
+
"min_samples_leaf": 5,
|
| 53 |
+
"min_samples_split": 10,
|
| 54 |
+
"max_features": "sqrt",
|
| 55 |
+
"n_jobs": -1,
|
| 56 |
+
"random_state": 42,
|
| 57 |
+
},
|
| 58 |
+
}
|
| 59 |
+
(models_dir / "model.meta.json").write_text(json.dumps(meta, indent=2), encoding="utf-8")
|
| 60 |
+
|
| 61 |
+
return f1
|
src/utils.py
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Utilitaires d'inférence : chargement modèle + prédiction unitaire/batch.
|
| 2 |
+
|
| 3 |
+
- Respecte l'ordre des colonnes appris à l'entraînement (model.meta.json).
|
| 4 |
+
- Accepte dicts (depuis une API) ou Series/DataFrame.
|
| 5 |
+
"""
|
| 6 |
+
from pathlib import Path
|
| 7 |
+
import json
|
| 8 |
+
from typing import Iterable, Union, Dict, Any, List
|
| 9 |
+
import joblib
|
| 10 |
+
import pandas as pd
|
| 11 |
+
|
| 12 |
+
def _load_meta(models_dir: str | Path = "models") -> dict:
|
| 13 |
+
meta_path = Path(models_dir) / "model.meta.json"
|
| 14 |
+
if not meta_path.exists():
|
| 15 |
+
raise FileNotFoundError(f"Métadonnées non trouvées: {meta_path}")
|
| 16 |
+
return json.loads(meta_path.read_text(encoding="utf-8"))
|
| 17 |
+
|
| 18 |
+
def load_model(models_dir: str | Path = "models"):
|
| 19 |
+
model_path = Path(models_dir) / "model.joblib"
|
| 20 |
+
if not model_path.exists():
|
| 21 |
+
raise FileNotFoundError(f"Modèle non trouvé: {model_path}")
|
| 22 |
+
return joblib.load(model_path)
|
| 23 |
+
|
| 24 |
+
def _to_dataframe(rows: Union[Dict[str, Any], pd.Series, pd.DataFrame, List[Dict[str, Any]]]) -> pd.DataFrame:
|
| 25 |
+
if isinstance(rows, pd.DataFrame):
|
| 26 |
+
return rows.copy()
|
| 27 |
+
if isinstance(rows, pd.Series):
|
| 28 |
+
return pd.DataFrame([rows.to_dict()])
|
| 29 |
+
if isinstance(rows, dict):
|
| 30 |
+
return pd.DataFrame([rows])
|
| 31 |
+
if isinstance(rows, Iterable):
|
| 32 |
+
return pd.DataFrame(list(rows))
|
| 33 |
+
raise TypeError("Format d'entrée non supporté pour la prédiction.")
|
| 34 |
+
|
| 35 |
+
def predict_proba(
|
| 36 |
+
rows: Union[Dict[str, Any], pd.Series, pd.DataFrame, List[Dict[str, Any]]],
|
| 37 |
+
models_dir: str | Path = "models"
|
| 38 |
+
) -> List[float]:
|
| 39 |
+
"""Retourne les probabilités de la classe positive (attrition=1)."""
|
| 40 |
+
meta = _load_meta(models_dir)
|
| 41 |
+
feats = meta["feature_columns"]
|
| 42 |
+
|
| 43 |
+
df = _to_dataframe(rows)
|
| 44 |
+
# assure le même ordre/ensemble de colonnes qu'à l'entraînement
|
| 45 |
+
for col in feats:
|
| 46 |
+
if col not in df.columns:
|
| 47 |
+
# si colonne manquante dans l'entrée, on la crée à 0 (au choix)
|
| 48 |
+
df[col] = 0
|
| 49 |
+
# supprime les colonnes inconnues
|
| 50 |
+
df = df[feats]
|
| 51 |
+
|
| 52 |
+
model = load_model(models_dir)
|
| 53 |
+
return [float(p) for p in model.predict_proba(df)[:, 1]]
|
| 54 |
+
|
| 55 |
+
def predict_proba_one(row: Dict[str, Any], models_dir: str | Path = "models") -> float:
|
| 56 |
+
return predict_proba(row, models_dir=models_dir)[0]
|
tests/test_api.py
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from fastapi.testclient import TestClient
|
| 2 |
+
from src.api.server import app
|
| 3 |
+
|
| 4 |
+
client = TestClient(app)
|
| 5 |
+
|
| 6 |
+
def test_health():
|
| 7 |
+
r = client.get("/health")
|
| 8 |
+
assert r.status_code == 200
|
| 9 |
+
assert r.json()["status"] == "ok"
|
| 10 |
+
|
| 11 |
+
def test_predict_one_minimal():
|
| 12 |
+
sample = {
|
| 13 |
+
"age": 41,
|
| 14 |
+
"genre": "F",
|
| 15 |
+
"revenu_mensuel": 6000,
|
| 16 |
+
"statut_marital": "Célibataire",
|
| 17 |
+
"departement": "Consulting",
|
| 18 |
+
"poste": "Consultant",
|
| 19 |
+
"nombre_experiences_precedentes": 6,
|
| 20 |
+
"annees_dans_le_poste_actuel": 2,
|
| 21 |
+
"note_evaluation_precedente": 3,
|
| 22 |
+
"note_evaluation_actuelle": 3,
|
| 23 |
+
"heure_supplementaires": 0,
|
| 24 |
+
"augementation_salaire_precedente": 12,
|
| 25 |
+
"nombre_participation_pee": 1,
|
| 26 |
+
"nb_formations_suivies": 2,
|
| 27 |
+
"distance_domicile_travail": 5,
|
| 28 |
+
"niveau_education": 2,
|
| 29 |
+
"annees_depuis_la_derniere_promotion": 1,
|
| 30 |
+
"annes_sous_responsable_actuel": 2,
|
| 31 |
+
"satisfaction_globale": 3.0,
|
| 32 |
+
"exp_moins_3_years": 0,
|
| 33 |
+
"domaine_etude": "Infra & Cloud",
|
| 34 |
+
"frequence_deplacement": "Occasionnel"
|
| 35 |
+
}
|
| 36 |
+
r = client.post("/predict_one", json=sample)
|
| 37 |
+
assert r.status_code == 200
|
| 38 |
+
body = r.json()
|
| 39 |
+
assert "proba" in body and "pred" in body and "threshold" in body
|
| 40 |
+
assert 0.0 <= body["proba"] <= 1.0
|
| 41 |
+
assert body["pred"] in (0, 1)
|
tests/test_data_preparation.py
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import pandas as pd
|
| 2 |
+
from src.data_preparation import load_processed, split_xy
|
| 3 |
+
|
| 4 |
+
def test_load_processed_ok():
|
| 5 |
+
df = load_processed()
|
| 6 |
+
assert isinstance(df, pd.DataFrame)
|
| 7 |
+
assert df.shape[0] > 0
|
| 8 |
+
assert "attrition" in df.columns
|
| 9 |
+
|
| 10 |
+
def test_split_xy_shapes():
|
| 11 |
+
df = load_processed()
|
| 12 |
+
X_train, X_test, y_train, y_test = split_xy(df, target="attrition", test_size=0.2, seed=42)
|
| 13 |
+
assert len(X_train) > 0 and len(X_test) > 0
|
| 14 |
+
assert len(X_train) == len(y_train)
|
| 15 |
+
assert len(X_test) == len(y_test)
|
tests/test_predict.py
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from pathlib import Path
|
| 2 |
+
|
| 3 |
+
def test_model_artifact_placeholder():
|
| 4 |
+
# à rendre strict après entraînement (vérifier réellement l'artefact)
|
| 5 |
+
assert Path("models").exists()
|
tests/test_smoke.py
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
def test_true():
|
| 2 |
+
assert True
|
uv.lock
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|