如何以编程方式检测 Scikit-learn 警告

Ram*_*zar 4 python python-3.x scikit-learn

使用拟合模型时,sklearn.neural_network.MLPClassifier有时会在控制台中收到警告:

ConvergenceWarning:随机优化器:达到最大迭代次数 (300),优化尚未收敛。

有没有办法在运行时检测警告,以便我可以采取行动?

Grr*_*Grr 5

您可以实时捕捉警告 warnings.catch_warnings

import warnings

with warnings.catch_warnings()
    warnings.filterwarnings('error')
    try:
        model.fit(X, y)
    except Warning:
        # do something in response
Run Code Online (Sandbox Code Playgroud)

此结构将捕获任何警告,并允许您以任何您认为合适的方式对其进行响应。在这种情况下,可能会修改一些超参数以使模型更容易收敛。

您还可以忽略警告,warnings.filterwarnings并且可以指定要忽略的警告类型。

忽略ConvergenceWarning

from sklearn.execpetions import ConvergenceWarning

warnings.filterwarnings('ignore', category=ConvergenceWarning)

...
Run Code Online (Sandbox Code Playgroud)