Scikit-learn: warnings.filterwarnings -- veuillez ne pas faire cela. c'est un mauvais comportement.

Créé le 10 août 2018  ·  3Commentaires  ·  Source: scikit-learn/scikit-learn

# Make sure that DeprecationWarning within this package always gets printed
warnings.filterwarnings('always', category=DeprecationWarning,
module=r'^{0}\.'.format(re.escape(__name__)))

via __init__.py

C'est vraiment un très mauvais comportement. Si vous pensez que vous devez vraiment le faire, veuillez utiliser append=True

Commentaire le plus utile

Pourriez-vous s'il vous plaît expliquer pourquoi sklearn remplace une configuration d'avertissement personnalisée ?

Si vous ajoutez append=True , vous ne remplacerez pas une configuration d'avertissement qui n'a pas été personnalisée.

Le problème est que l'état global de mes applications ne devrait pas être affecté par l'importation de votre package. Je ne voudrais pas non plus que vous fassiez des choses comme changer ma configuration de journalisation.

Tous les 3 commentaires

Pourriez-vous s'il vous plaît expliquer en quoi cela pose problème pour votre application ? D'après les commentaires, il semble que cela ne devrait affecter que DeprecationWarnings dans scikit-learn.

(Voir également la discussion connexe dans https://github.com/scikit-learn/scikit-learn/pull/6930)

Pourriez-vous s'il vous plaît expliquer pourquoi sklearn remplace une configuration d'avertissement personnalisée ?

Si vous ajoutez append=True , vous ne remplacerez pas une configuration d'avertissement qui n'a pas été personnalisée.

Le problème est que l'état global de mes applications ne devrait pas être affecté par l'importation de votre package. Je ne voudrais pas non plus que vous fassiez des choses comme changer ma configuration de journalisation.

Si vous ajoutez append=True, vous ne remplacerez pas une configuration d'avertissement qui n'a pas été personnalisée.

Essayé, cela, en installant sklearn à partir des sources et en levant manuellement une dépréciation dans sklearn.utils.__init__.py . Avec la configuration par défaut, l'avertissement s'est déclenché comme prévu lors de l'appel de python -c "import sklearn.utils" . Si nous ajoutons append=True à warnings.filterwarnings utilisé dans sklearn/__init__.py le DeprecationWarning n'est plus levé. Je n'ai pas cherché pourquoi.

Je suis d'accord que la situation actuelle est mauvaise, j'étais juste curieux de savoir quel genre de problèmes pratiques vous rencontrez avec cette configuration (au-delà du fait que c'est mauvais par principe). Avoir une bonne compréhension des cas d'utilisation nous aiderait également à trouver la bonne solution. Ce problème a été discuté dans https://github.com/scikit-learn/scikit-learn/issues/9857 (voir notamment https://github.com/scikit-learn/scikit-learn/issues/9857#issuecomment- 333351913 et https://github.com/scikit-learn/scikit-learn/issues/9857#issuecomment-333359072) qui explique la raison des situations actuelles.

En fermant ceci en tant que duplicata de https://github.com/scikit-learn/scikit-learn/issues/9857 (pour éviter de fragmenter la même discussion sur plusieurs problèmes). Vous êtes cependant les bienvenus pour commenter ou proposer des solutions.

Cette page vous a été utile?
0 / 5 - 0 notes