warnings.filterwarnings()无法屏蔽SGDClassifier的ConvergenceWarning怎么办?
解决Scikit-learn SGDClassifier收敛警告无法屏蔽的问题
方法1:精准匹配Scikit-learn的ConvergenceWarning类
通用的warnings.filterwarnings('ignore')可能因警告类层级问题未生效,直接指定目标警告类即可:
from sklearn.exceptions import ConvergenceWarning import warnings # 仅屏蔽SGDClassifier触发的收敛警告 warnings.filterwarnings("ignore", category=ConvergenceWarning)
方法2:从模型参数层面直接关闭警告
SGDClassifier自带控制警告的参数warn_on_fit,设置为False可直接禁止该模型在拟合时发出收敛警告:
from sklearn.linear_model import SGDClassifier # 初始化模型时关闭拟合警告 clf = SGDClassifier(max_iter=你的参数值, warn_on_fit=False) clf.fit(X_train, y_train)
这种方式最精准,不会影响其他模型或代码的警告输出。
方法3:使用上下文管理器局部屏蔽警告
如果只需要在拟合过程中临时屏蔽警告,不影响其他代码的警告,可以用catch_warnings上下文管理器:
from sklearn.exceptions import ConvergenceWarning import warnings # 仅在fit执行期间屏蔽警告 with warnings.catch_warnings(): warnings.filterwarnings("ignore", category=ConvergenceWarning) clf.fit(X_train, y_train)
内容的提问来源于stack exchange,提问作者KnightChaser
相关产品推荐
相关产品推荐

