Logging and Progress Control¶
nonconform uses Python logging for strategy-level progress and warnings.
Aggregation progress bars are controlled by ConformalDetector(verbose=...).
Quick Setup¶
import logging
# Development: show progress/info
logging.getLogger("nonconform").setLevel(logging.INFO)
# Production: warnings and errors only
logging.getLogger("nonconform").setLevel(logging.WARNING)
verbose vs Logging Level¶
verbose=Trueshows aggregation progress duringcompute_p_values()andscore_samples().- Logging level controls strategy-level progress output and warnings.
import logging
from sklearn.ensemble import IsolationForest
from nonconform import ConformalDetector, CrossValidation
logging.getLogger("nonconform").setLevel(logging.INFO)
detector = ConformalDetector(
detector=IsolationForest(random_state=42),
strategy=CrossValidation(k=5),
score_polarity="auto",
verbose=True,
seed=42,
)
detector.fit(X_train)
_ = detector.compute_p_values(X_test)
Common Patterns¶
Quiet Production Output¶
import logging
logging.getLogger("nonconform").setLevel(logging.WARNING)
detector = ConformalDetector(
detector=base_detector,
strategy=strategy,
verbose=False,
)
Keep Aggregation Bars, Hide Strategy Details¶
import logging
logging.getLogger("nonconform").setLevel(logging.WARNING)
detector = ConformalDetector(
detector=base_detector,
strategy=strategy,
verbose=True,
)
Full Debugging¶
import logging
logging.basicConfig(
level=logging.DEBUG,
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
)
Typical Progress Messages¶
| Message | Component | Trigger |
|---|---|---|
CV fold training (N folds) |
Cross-validation strategy | fit() |
Bootstrap training (N folds) |
Bootstrap strategy | fit() |
Aggregating N models |
Ensemble aggregation | compute_p_values() / score_samples() with verbose=True |
Logger Names¶
Useful logger namespaces:
nonconformnonconform.resampling.*nonconform.weighting.*nonconform.fdrnonconform.adaptersnonconform._internal.*
Configure specific namespaces if you want different levels per subsystem.