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

标签 python python-3.x scikit-learn

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

ConvergenceWarning: Stochastic Optimizer: Maximum iterations (300) reached and the optimization hasn't converged yet.

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

最佳答案

您可以使用 warnings.catch_warnings 实时捕获警告

import warnings

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

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

您也可以使用 warnings.filterwarnings 忽略警告并且可以指定要忽略的警告类型。

忽略ConvergenceWarning:

from sklearn.execpetions import ConvergenceWarning

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

...

关于python - 如何以编程方式检测 Scikit-learn 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48100939/

相关文章:

python - 将一个数字的位数相加

python - 如何在 Python 的语句中使用变量?

python - 使用 beautifulsoup 从维基百科表中获取列

python - 如何根据其他数据框中的列为 pandas 数据框中的列分配值?

python - 如果重复的列表项不一个接一个地更改,则更改它们

machine-learning - sklearn中的最大似然估计

python - 如何使用带有python的默认浏览器打开和关闭网站

python - 为什么 TextIOWrapper 关闭给定的 BytesIO 流?

Python在一行代码上运行速度极慢

python - 惩罚一类svm sklearn的错误?