我在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')
解决方案,他们似乎也无法将警告静音。
如果这是您的情况,并且您正在执行具有并行作业的GridSearchCV
或RandomizedSearchCV
(即 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指标有关,但不幸的是,其他可能更合适的线程已关闭。由于我没有足够的观点来评论,我必须在类似的问题下添加这个答案。