J'adapte les modèles GARCH aux données de milliers de capteurs, pour chaque jour du mois, en utilisant le ARCH package. Je sais que toutes les données ne sont pas propres, et le modèle pourrait ne pas converger pour certains capteurs, et je suis d'accord avec cela. Je prévois de traiter avec eux par capteur plus tard.Filtrer les avertissements lorsque le module remplace la liste de filtres
Mon problème est la façon dont Python gère les avertissements. Selon le Warnings documentation:
Conceptuellement, le filtre avertissements maintient une liste ordonnée de filtre spécifications; tout avertissement spécifique est comparé à chaque spécification de filtre dans la liste jusqu'à ce qu'une correspondance soit trouvée; le match détermine la disposition de la correspondance.
Ce qui signifie essentiellement que
warnings.simplefilter('ignore')
sera ajouté à la tête de la liste.
Cependant, dans le ARCH package, dans /arch/base.py, line 507 lit:
warnings.simplefilter('always')
qui, en substance au 'always'
ajoute début des avertissements filtrer chaque fois qu'un appel est fait au modèle méthode d'ajustement de ARCH. Cela garantit que l'avertissement est toujours affiché parce que je peux seulement ajouter 'ignore'
à la tête de la liste avant ou après avoir passé un appel à .fit()
(ce qui serait remplacé par 'always'
dans le prochain appel.Mon problème implique des milliers de capteurs, il imprime des milliers d'avertissements qui ralentissent l'ordinateur portable Jupyter à un vide sanitaire.
est-il possible d'ignorer les avertissements dans toutes les conditions? comme un filtre super pour les avertissements serait génial.
Il est très regrettable qu'ils réinitialisent le filtre à chaque appel. Vous pourriez détourner la fonction 'warn' du module' warnings', mais c'est moche. – rubik
@rubik, je ne sais pas comment ... Et là encore, ils importent des "avertissements" à chaque appel, donc à moins que je change le code source, je ne vois pas comment détourner la fonction 'warn' dans mon code aiderait. – Kartik
Un module est importé une seule fois, puis stocké dans 'sys.modules'. Je vais décrire la solution dans une réponse. – rubik