【问题标题】:Hide scikit-learn ConvergenceWarning: "Increase the number of iterations (max_iter) or scale the data"Hide scikit-learn ConvergenceWarning:“增加迭代次数(max_iter)或缩放数据”
【发布时间】:2021-06-30 10:25:28
【问题描述】:

我正在使用 Python 来预测值并收到许多警告,例如:

增加迭代次数(max_iter)或将数据缩放为 显示在: https://scikit-learn.org/stable/modules/preprocessing.html 另请参阅文档以获取替代求解器选项: https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression n_iter_i = _check_optimize_result( C:\Users\ASMGX\anaconda3\lib\site-packages\sklearn\linear_model_logistic.py:762: ConvergenceWarning:lbfgs 未能收敛(状态 = 1):停止:总计 不。迭代次数达到限制。

这使我无法看到自己的打印结果。

有什么方法可以阻止这些警告显示?

【问题讨论】:

  • 你没有发布任何代码或数据,所以很难说。这意味着您的数据没有在给定的限制内收敛。
  • @RecencyEffect 我知道这意味着什么。我只是想隐藏它
  • 你能用warnings.filterwarnings过滤它们吗?

标签: python scikit-learn


【解决方案1】:

您可以使用warnings-模块暂时禁止警告。所有警告或特定警告。

在这种情况下,scikit-learn 提出了ConvergenceWarning,所以我建议完全禁止这种类型的警告。该警告类位于sklearn.exceptions.ConvergenceWarning,因此请预先导入它并使用上下文管理器catch_warnings 和函数simplefilterignore 警告,即不将其打印到屏幕上:

import warnings
from sklearn.exceptions import ConvergenceWarning

with warnings.catch_warnings():
    warnings.simplefilter("ignore", category=ConvergenceWarning)
    
    optimizer_function_that_creates_warning()

您也可以全局忽略该特定警告以避免使用上下文管理器:

import warnings
warnings.simplefilter("ignore", category=ConvergenceWarning)

optimizer_function_that_creates_warning()

我建议使用上下文管理器,因为您可以确定在何处禁止显示警告。这样您就不会抑制来自意外位置的警告。

【讨论】:

    猜你喜欢
    • 2019-03-11
    • 2012-10-30
    • 2014-03-21
    • 2017-04-15
    • 2015-06-22
    • 1970-01-01
    • 2021-08-08
    • 2015-04-14
    • 2018-11-05
    相关资源
    最近更新 更多