Scikit-learn: warnings.filterwarnings - por favor, não faça isso. é mau comportamento.

Criado em 10 ago. 2018  ·  3Comentários  ·  Fonte: 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

Este é um comportamento realmente muito ruim. Se você sentir que realmente deve fazer isso, use append=True

Comentários muito úteis

Você poderia explicar por que sklearn substitui uma configuração de aviso personalizada?

Se você adicionar append=True , não estará substituindo uma configuração de aviso que não foi personalizada.

O problema é que o estado global de meus aplicativos não deve ser afetado pela importação de seu pacote. Eu também não gostaria que você fizesse coisas como alterar minha configuração de registro.

Todos 3 comentários

Você poderia explicar de que forma isso é um problema para o seu aplicativo? Pelos comentários, parece que só deve afetar DeprecationWarnings no scikit-learn.

(Consulte também a discussão relacionada em https://github.com/scikit-learn/scikit-learn/pull/6930)

Você poderia explicar por que sklearn substitui uma configuração de aviso personalizada?

Se você adicionar append=True , não estará substituindo uma configuração de aviso que não foi personalizada.

O problema é que o estado global de meus aplicativos não deve ser afetado pela importação de seu pacote. Eu também não gostaria que você fizesse coisas como alterar minha configuração de registro.

Se você adicionar append = True, não estará substituindo uma configuração de aviso que não foi personalizada.

Tentei isso, instalando o sklearn das fontes e levantando manualmente uma depreciação em sklearn.utils.__init__.py . Com a configuração padrão, o aviso é gerado conforme o esperado ao chamar python -c "import sklearn.utils" . Se adicionarmos append=True a warnings.filterwarnings usados ​​em sklearn/__init__.py o DeprecationWarning não é mais gerado. Eu não investiguei o porquê.

Eu concordo que a situação atual é ruim, eu só estava curioso para saber que tipo de problemas práticos você enfrenta com esta configuração (além do fato de que é ruim em princípio). Ter um bom entendimento dos casos de uso também nos ajudaria a encontrar a solução certa. Este problema foi discutido em https://github.com/scikit-learn/scikit-learn/issues/9857 (veja em particular https://github.com/scikit-learn/scikit-learn/issues/9857#issuecomment- 333351913 e https://github.com/scikit-learn/scikit-learn/issues/9857#issuecomment-333359072) que descreve o motivo das situações atuais.

Fechar isso como uma duplicata de https://github.com/scikit-learn/scikit-learn/issues/9857 (para evitar fragmentar a mesma discussão em vários problemas). Você é muito bem-vindo para comentar ou propor soluções.

Esta página foi útil?
0 / 5 - 0 avaliações