Boîte à outils Machine Learning réutilisable (chargement, EDA, preprocessing, modélisation, interprétation, persistence).
Project description
Boîte à outils Machine Learning réutilisable
Accélère l'exploration, la préparation, la modélisation et la mise en production
des projets de Data Science.
Installation
pip install nanuq
Ou avec uv :
uv pip install nanuq
Démarrage rapide
import nanuq
# 1. Charger et explorer
df = nanuq.load_csv("data.csv")
nanuq.dataset_overview(df)
# 2. Analyser les liens avec la cible
ranking = nanuq.rank_features_by_target_association(df, target="churn")
# 3. Entraîner et évaluer un modèle
from sklearn.ensemble import GradientBoostingClassifier
model = GradientBoostingClassifier().fit(X_train, y_train)
nanuq.evaluate_classifier(model, X_train, y_train, X_test, y_test)
# 4. Sauvegarder pour la production
meta = nanuq.build_metadata(model, X_train.columns.tolist(), threshold=0.29)
nanuq.save_artifacts(model, meta, "artifacts/")
# 5. Recharger et prédire avec un seuil custom
model, meta = nanuq.load_artifacts("artifacts/")
preds = nanuq.predict_with_threshold(
model, X_new, threshold=meta["threshold"], feature_order=meta["feature_order"]
)
Philosophie
- Réutilisable : pensé pour être installé comme une lib et servir sur plusieurs projets.
- Comparatif : quand plusieurs méthodes existent pour une même action (imputation, scaling, gestion du déséquilibre, etc.), le toolkit propose les fonctions atomiques et un comparateur qui les met en regard.
- Pédagogique : code documenté, docstrings systématiques, exemples inclus.
- Pas de magie : pas d'effets de bord, pas de modification en place des DataFrames.
Modules
| Module | Contenu |
|---|---|
loading |
Lecture CSV / Excel / JSON / Parquet / SQL |
exploration |
Vue d'ensemble du dataset, types de colonnes |
cleaning |
Imputation des NaN (mean, median, mode) + rapports |
outliers |
Détection Z-score / IQR + comparateur |
encoding |
One-Hot, Label, Ordinal, binaire + comparateur |
scaling |
MinMax, Standard + comparateur |
transformations |
Log, sqrt, Box-Cox, quantile, power |
feature_engineering |
Polynomial features, interactions, discrétisation |
balancing |
class_weight, SMOTE, undersampling |
bivariate |
Chi², Mann-Whitney, corrélations Pearson/Spearman |
models |
Modèles linéaires, arbres, boostés |
evaluation |
Métriques, CV stratifiée, courbe précision-rappel, seuil optimal |
interpretation |
SHAP, Permutation Importance, feature importance native |
persistence |
Sauvegarde/chargement de modèles pour la production |
plots |
Visualisations (boxplots, matrices de confusion, importances) |
reporting |
Génération de rapports EDA |
Mise en production avec persistence
Le module persistence industrialise la sauvegarde des modèles selon les bonnes
pratiques : séparation du modèle binaire (model.joblib) et des métadonnées
lisibles (metadata.json), avec vérification d'intégrité par hash SHA256.
from nanuq import build_metadata, save_artifacts, load_artifacts, predict_with_threshold
# Sauvegarde : deux fichiers séparés
meta = build_metadata(model, X.columns.tolist(), threshold=0.286,
metrics={"auc": 0.83, "f1": 0.54})
save_artifacts(model, meta, "artifacts/")
# Chargement + inférence avec seuil personnalisé
model, meta = load_artifacts("artifacts/") # vérifie le hash automatiquement
preds = predict_with_threshold(model, X_new, threshold=meta["threshold"],
feature_order=meta["feature_order"])
Avantage de la séparation : le seuil de décision peut être ajusté dans
metadata.json sans réentraîner ni toucher au modèle.
Développement
# Installer en mode editable avec les outils de dev
uv pip install -e ".[dev]"
# Lancer les tests
pytest
# Vérifier le style
ruff check src/ tests/
Licence
MIT — (c) 2026 Olivier Gruwe
nanuq signifie « ours polaire » en inuktitut.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nanuq-0.2.0.tar.gz.
File metadata
- Download URL: nanuq-0.2.0.tar.gz
- Upload date:
- Size: 122.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6b346dd8cd01c6fa6b10c5be2a40de42e940285d3eee256e70413193db39ea7b
|
|
| MD5 |
bce3f7aa1cfc116ef69d30ad006de6f9
|
|
| BLAKE2b-256 |
44257d3a2b71cade66ac2c53d943133e109fb12c73ede49cee41e914a6c6f046
|
File details
Details for the file nanuq-0.2.0-py3-none-any.whl.
File metadata
- Download URL: nanuq-0.2.0-py3-none-any.whl
- Upload date:
- Size: 65.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a4b15d07264eee4ca530b37d9b32104736ef9f3e109dcd064224348ced6a8f16
|
|
| MD5 |
c966c91747f644dce46dc526a5365d5b
|
|
| BLAKE2b-256 |
deadc7ca7de451bbf9d05e6a3566c99286032a66a4a5e7f4e555509350ad4e11
|