Skip to main content

Boîte à outils Machine Learning réutilisable (chargement, EDA, preprocessing, modélisation, interprétation, persistence).

Project description

nanuq

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.

Python 3.11+ License MIT Tests Ruff


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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nanuq-0.2.0.tar.gz (122.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nanuq-0.2.0-py3-none-any.whl (65.7 kB view details)

Uploaded Python 3

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

Hashes for nanuq-0.2.0.tar.gz
Algorithm Hash digest
SHA256 6b346dd8cd01c6fa6b10c5be2a40de42e940285d3eee256e70413193db39ea7b
MD5 bce3f7aa1cfc116ef69d30ad006de6f9
BLAKE2b-256 44257d3a2b71cade66ac2c53d943133e109fb12c73ede49cee41e914a6c6f046

See more details on using hashes here.

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

Hashes for nanuq-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a4b15d07264eee4ca530b37d9b32104736ef9f3e109dcd064224348ced6a8f16
MD5 c966c91747f644dce46dc526a5365d5b
BLAKE2b-256 deadc7ca7de451bbf9d05e6a3566c99286032a66a4a5e7f4e555509350ad4e11

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page