python - 使用 n_jobs > 1 时关闭 scikit-learn 的警告
问题描述
我可以使用库通过 scikit-learn 关闭警告,其中有几个选项warnings
:
# After the imports
warnings.filterwarnings(action='ignore')
# Or in the code
with warnings.catch_warnings():
warnings.simplefilter("ignore")
# do stuff
但是,一旦 n_jobs 参数高于 1(由于多处理?),这对分类器不起作用。以下代码示例说明了这一点:
import numpy as np
from sklearn.multiclass import OneVsRestClassifier
from sklearn.linear_model import LogisticRegression
import warnings
import logging
logger = logging.getLogger()
for n_job in [1, 2]:
print("START")
print("n_jobs =", n_job)
clf = OneVsRestClassifier(LogisticRegression(solver="liblinear", multi_class="ovr"), n_jobs=n_job)
x_train = np.array([[1,1], [0,1], [0,0], [1,5], [2,1], [3,1]])
y_train = np.array([[False, False, True], [False, False, True], [True, False, False], [True, False, False], [True, False, True], [True, False, False]])
with warnings.catch_warnings():
warnings.simplefilter("ignore")
clf.fit(x_train, y_train) # "UserWarning: Label not 1 is present in all training examples."
print("END")
print()
输出:
START
n_jobs = 1
END
START
n_jobs = 2
UserWarning: Label not 1 is present in all training examples.
END
即使 n_jobs > 1 我如何禁用警告?
编辑:由于它可能与 相关multiprocessing
,我可能会补充说我在 linux 上使用 python 3.6 运行了这个脚本。
解决方案
推荐阅读
- r - 在 R 中的数据框的每个元素上应用带有参数的函数
- throw - 我不是程序员:“throw”是指特定的代码元素还是像“show”这样的通用术语?
- csv - # 在 CSV 标题中
- java - Spring boot - MongoRepository 日期转换
- laravel-nova - Laravel Nova - 如何确定资源计算字段的视图(索引、详细信息、表单)?
- angularjs - Promise Ionic/Angular - 用户连接
- dialogflow-es - 在 Dialogflow 中添加更多闲聊选项
- machine-learning - CNN架构keras
- outlook-addin - Outlook Web 插件(适用于 Android)查看/下载 docx/pdf
- sails.js - Sailsjs 模型不断删除我的表格内容