TypeError: sklearn ignore_warnings expects class or tuple of classes

TypeError: sklearn ignore_warnings expects class or tuple of classes

我试图粗略地忽略几个模型的良好参数,包括带有 RandomizedSearchCV 的 LogisticRegression。由于某些参数组合不兼容,我得到 sklearn FitFailedWarning 即 Solver newton-cg supports only 'l2' or 'none' penalties, got l1 penalty.

我只想忽略那些特定的警告,我发现这样做的解决方案是使用:

from sklearn.exceptions import FitFailedWarning
from sklearn.utils._testing import ignore_warnings
with ignore_warnings(category=[FitFailedWarning]):
    grid.fit(x_train, y_train)

我的问题是,虽然这对大多数网格模型(knn、决策树等)都正常工作,但它对 LogisticRegression 网格失败并出现错误:

TypeError: issubclass() arg 2 must be a class or tuple of classes

在没有 ignore_warnings 的情况下进行拟合

lr_grid.fit(x_train, y_train)

是否有另一种正确的方法来使 RandomizedSearchCV 的 FitFailedWarning 与 LogisticRegression 静音?

您可以将默认参数值 Warning 保留为上下文管理器中的参数 category ignore_warnings 这将使所有类别警告静音。

with ignore_warnings():
    grid.fit(x_train, y_train)

或传递一组警告。该错误是因为您正在传递一个列表,它需要一个警告 class 或一个带有警告 classes.

的元组
with ignore_warnings(category=(FitFailedWarning, UserWarning)):
    search = grid.fit(X_train, y_train)