Scikit-learn: warnings.filterwarnings: no haga esto. es un mal comportamiento.

Creado en 10 ago. 2018  ·  3Comentarios  ·  Fuente: 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__)))

a través de __init__.py

Este es realmente un mal comportamiento. Si siente que realmente debe hacer esto, use append=True

Comentario más útil

¿Podría explicar por qué sklearn anula una configuración de advertencia personalizada?

Si agrega append=True , entonces no estaría anulando una configuración de advertencia que no se ha personalizado.

El problema es que el estado global de mis aplicaciones no debería verse afectado por la importación de su paquete. Tampoco quisiera que hicieras cosas como cambiar mi configuración de registro.

Todos 3 comentarios

¿Podría explicar de qué manera esto representa un problema para su aplicación? Por los comentarios, parece que solo debería afectar a DeprecationWarnings dentro de scikit-learn.

(Consulte también la discusión relacionada en https://github.com/scikit-learn/scikit-learn/pull/6930)

¿Podría explicar por qué sklearn anula una configuración de advertencia personalizada?

Si agrega append=True , entonces no estaría anulando una configuración de advertencia que no se ha personalizado.

El problema es que el estado global de mis aplicaciones no debería verse afectado por la importación de su paquete. Tampoco quisiera que hicieras cosas como cambiar mi configuración de registro.

Si agrega append = True, no anulará una configuración de advertencia que no se haya personalizado.

Lo intenté, instalando sklearn desde las fuentes y generando manualmente una depreciación en sklearn.utils.__init__.py . Con la configuración predeterminada, la advertencia se generó como se esperaba al llamar a python -c "import sklearn.utils" . Si agregamos append=True a warnings.filterwarnings usados ​​en sklearn/__init__.py el DeprecationWarning ya no se recauda. No he investigado por qué.

Estoy de acuerdo en que la situación actual es mala, solo tenía curiosidad por saber qué tipo de problemas prácticos se encuentran con esta configuración (más allá del hecho de que es mala en principio). Tener una buena comprensión de los casos de uso también nos ayudaría a encontrar la solución adecuada. Este problema se discutió en https://github.com/scikit-learn/scikit-learn/issues/9857 (ver en particular https://github.com/scikit-learn/scikit-learn/issues/9857#issuecomment- 333351913 y https://github.com/scikit-learn/scikit-learn/issues/9857#issuecomment-333359072) que describe el motivo de las situaciones actuales.

Cerrando esto como un duplicado de https://github.com/scikit-learn/scikit-learn/issues/9857 (para evitar fragmentar la misma discusión sobre múltiples problemas). Sin embargo, le invitamos a comentar o proponer soluciones.

¿Fue útil esta página
0 / 5 - 0 calificaciones