You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解决sklearn ignore_warnings传参触发TypeError及屏蔽FitFailedWarning问题

错误根源

TypeError: issubclass() arg 2 must be a class or tuple of classes 报错是因为ignore_warnings的category参数仅支持传入警告类本身或警告类组成的元组,你传入的[FitFailedWarning]是列表类型,不符合参数要求。之前在KNN、决策树参数搜索时未触发报错属于参数校验逻辑未覆盖的巧合,在LogisticRegression训练路径中相关校验被触发才抛出错误。

可行解决方案

方案1:修复原有代码的参数类型

把传入category的列表改为单元素元组即可(注意单元素元组末尾要加逗号,否则会被识别为单个类而非元组):

from sklearn.exceptions import FitFailedWarning
from sklearn.utils._testing import ignore_warnings

with ignore_warnings(category=(FitFailedWarning,)):
    lr_grid.fit(x_train, y_train)

注意:sklearn.utils._testing属于scikit-learn的内部测试API,不同版本可能出现变动,稳定性较差。

方案2:使用Python标准库warnings模块(更推荐)

不依赖sklearn内部接口,兼容性和稳定性更高:

import warnings
from sklearn.exceptions import FitFailedWarning

with warnings.catch_warnings():
    # 临时屏蔽所有FitFailedWarning
    warnings.filterwarnings("ignore", category=FitFailedWarning)
    lr_grid.fit(x_train, y_train)
补充说明

如果需要同时屏蔽多类警告,将多个警告类放在元组中传入即可,示例:
warnings.filterwarnings("ignore", category=(FitFailedWarning, RuntimeWarning))

内容的提问来源于stack exchange,提问作者euh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 17:36:01