python 如何静音所有sklearn警告

jdg4fx2g  于 2023-04-28  发布在  Python
关注(0)|答案(2)|浏览(201)

我在sklearn中使用F1_score指标。对于一些训练数据集,y=1(罕见情况)集的总数为零,F1_score为零,这是正常的。但sklearn会给出以下警告:
“UndefinedMetricWarning:F分数定义不明确,并设置为0。0,因为没有预测样本”。
有谁知道如何消除这个警告?一般来说,我们可以在sklearn中静音所有类型的警告吗?

ztyzrc3y

ztyzrc3y1#

你可以很容易地ignore警告,在Python中的warnings模块的帮助下,像这样。

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))

这不会显示警告。

mnemlml8

mnemlml82#

我在这里添加我的经验,因为一些用户似乎无法使警告静音,即使他们使用@sreeram-tp建议的warnings.filterwarnings('ignore')解决方案。
如果是这种情况,并且您正在执行带有并行作业的GridSearchCVRandomizedSearchCV(即:即n_jobs参数不等于1),这是因为joblib派生的作业没有继承当前作业中设置的相同警告过滤器。有关更多信息,请咨询answer by @caseygrun。
在我的情况下,为了解决这个问题,我必须应用两种解决方案:

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

请注意,仅设置os环境变量是不够的。这两个命令都是必需的。
编辑:我知道问题的情况与f1_score度量有关,但不幸的是,其他可能更合适的线程被关闭了。由于我没有足够的意见,我不得不在类似的问题下补充这个答案。

相关问题