如何使所有 sklearn 警告静音



我在sklearn中使用F1_score指标。对于某些训练数据集,y=1(极少数情况)集合的总数为零,F1_score为零,这是正常的。但是 sklearn 给出了以下警告:

"未定义指标警告:F 分数定义不明确,由于没有预测样本而被设置为 0.0"。

有谁知道如何使这个警告静音? 一般来说,我们可以在 sklearn 中静音各种警告吗?

您可以像

这样借助 Python 中的warnings模块轻松ignore警告。

import warnings
warnings.filterwarnings('ignore') 

例如

from sklearn.metrics import f1_score
yhat = [0] * 100
y = [0] * 90 + [1] * 10
print(f1_score(y, yhat))

这将引发警告。为了避免这种使用,

from sklearn.metrics import f1_score
import warnings
warnings.filterwarnings('ignore') 
yhat = [0] * 100
y = [0] * 90 + [1] * 10
print(f1_score(y, yhat))

这不会显示警告。

我在这里添加我的经验,因为即使某些用户使用 @sreeram-tp 建议的warnings.filterwarnings('ignore')解决方案,他们似乎也无法将警告静音。

如果这是您的情况,并且您正在执行具有并行作业的GridSearchCVRandomizedSearchCV(即 n_jobs参数不等于 1),发生这种情况是因为 joblib 生成的作业不会继承当前作业中设置的相同警告过滤器。有关更多信息,请查阅@caseygrun的答案。

就我而言,要修复此行为,我必须应用两种解决方案:

# Removes warnings in the current job
warnings.filterwarnings("ignore")
# Removes warnings in the spawned jobs
os.environ['PYTHONWARNINGS']='ignore'

请注意,仅设置 os 环境变量是不够的。这两个命令都是必需的。

编辑:我知道问题的情况与f1_score指标有关,但不幸的是,其他可能更合适的线程已关闭。由于我没有足够的观点来评论,我必须在类似的问题下添加这个答案。

相关内容

  • 没有找到相关文章

最新更新