web-dev-qa-db-fra.com

Éliminer les avertissements de scikit-learn

Je voudrais ignorer les avertissements de tous les packages lorsque j'enseigne, mais scikit-learn semble contourner l'utilisation du package warnings pour contrôler cela. Par exemple:

with warnings.catch_warnings():
    warnings.simplefilter("ignore")
    from sklearn import preprocessing

/usr/local/lib/python3.5/site-packages/sklearn/utils/fixes.py:66: DeprecationWarning: inspect.getargspec() is deprecated, use inspect.signature() instead
  if 'order' in inspect.getargspec(np.copy)[0]:
/usr/local/lib/python3.5/site-packages/sklearn/utils/fixes.py:358: DeprecationWarning: inspect.getargspec() is deprecated, use inspect.signature() instead
  if 'exist_ok' in inspect.getargspec(os.makedirs).args:

Est-ce que j'utilise ce module de manière incorrecte ou est-ce que Sklearn fait quelque chose que ce n'est pas censé faire?

50
Chris Fonnesbeck

Cela m'énerve à l'extrême que de m'apprendre force des avertissements .

J'ai commencé à utiliser ceci au sommet de main.py:

def warn(*args, **kwargs):
    pass
import warnings
warnings.warn = warn

#... import sklearn stuff...
61
joshterrell805

Ils ont changé leur politique d'alerte en 201 . Vous pouvez ignorer les avertissements (aussi des types spécifiques) avec quelque chose comme ceci:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

// EDIT: dans les commentaires ci-dessous, Reed Richards souligne que the filterwarnings call needs to be in the file that calls the function that gives the warning. J'espère que cela aidera ceux qui ont rencontré des problèmes avec cette solution.

52
Zakum