jar*_*lav 7 python scikit-learn
当参数n_jobs 设置为 -1时,如何从命令行使用 sklearn 的GridsearchCV()运行脚本而不打印所有警告?使用 warnings.simplefilter('ignore') 它不起作用。
当 n_jobs = 1 时,它工作正常并且不会打印任何警告
当我从spyder运行脚本时,即使n_jobs = -1,它也能正常工作
我尝试了这里描述的多种方法消除来自 scikit-learn 的警告,但是当从命令行和 Gridsearch 运行 n_jobs = -1 的脚本时,它们都不起作用
我还尝试将 with 语句放在忽略之后的警告if __name__ == '__main__'
声明,但这也不起作用
我有 scikit-learn 0.21.3。
这是一个可重现的小示例,它多次打印来自 IsolationForest 的 FutureWarning 和 DepreciationWarning。
from sklearn import datasets
from sklearn.cluster import KMeans
from sklearn.pipeline import Pipeline
from sklearn.model_selection import GridSearchCV
from sklearn.preprocessing import StandardScaler, MinMaxScaler
from sklearn.ensemble import IsolationForest
import warnings
import numpy as np
from sklearn.base import BaseEstimator, TransformerMixin
class OutlierRemover(BaseEstimator, TransformerMixin):
def __init__(self, contamination = 0.1):
self.contamination = contamination
def fit(self, x, y = None):
return self
def transform(self, x, y = None):
predicted_values = IsolationForest(n_jobs = -1, contamination = self.contamination).fit_predict(x)
x = x[np.where(predicted_values == 1)]
return x
def pipe():
iris = datasets.load_iris()
x = iris.data
pipe = Pipeline([('scalers', MinMaxScaler()),
('outlierRemovers', OutlierRemover()),
('cluster', KMeans(n_jobs = -1))])
params = [{'scalers':[MinMaxScaler(), StandardScaler()]}]
gridsearch = GridSearchCV(pipe, params, verbose = 100, cv = 2, n_jobs = -1)
with warnings.catch_warnings():
warnings.simplefilter('ignore')
gridsearch.fit(x)
if __name__ == '__main__':
pipe()
Run Code Online (Sandbox Code Playgroud)
对于您需要的并行后端警告(从终端):
export PYTHONWARNINGS="ignore"
Run Code Online (Sandbox Code Playgroud)
接下来,使用 python 运行脚本。
对于DeprecationWarning,你不能,这实际上是一个错误。欢迎在 github 上提出请求。
| 归档时间: |
|
| 查看次数: |
1305 次 |
| 最近记录: |