gpt4 book ai didi

python-3.x - 带有自定义转换器的并行 GridSearchCV 卡在 IPython 笔记本中

转载 作者:行者123 更新时间:2023-12-04 02:18:17 24 4
gpt4 key购买 nike

我在 IPython Notebook 中有代码,它使用 sklearn 的 GridSearchCV 和 n_jobs = 4 并行选择模型的参数。

它工作正常,直到我将自定义转换器添加到管道中。一旦我将自定义转换器添加到管道中,它就会开始“挂起”……即该过程永远不会完成,即使 CPU 使用率降至零。

当我设置 n_jobs = 1 时,即使使用自定义转换器也能正常工作。

这是重现问题的代码(将其复制并粘贴到 IPython Notebook 单元格中):

from sklearn.base import BaseEstimator, TransformerMixin
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
from sklearn.grid_search import GridSearchCV
from sklearn.pipeline import Pipeline

iris = load_iris()

X = iris["data"]
y = iris["target"]

class DummyTransformer(BaseEstimator, TransformerMixin):
def fit(self, X, y=None):
return self
def transform(self, X):
return X

cv = GridSearchCV(estimator=Pipeline(steps=[('dummy', DummyTransformer()),
('rf', RandomForestClassifier())]),
param_grid={"rf__n_estimators": [10, 100]},
scoring="f1_weighted",
cv=10,
n_jobs=2) # n_jobs = 1 works fine, but setting n_jobs = 2 makes the script run forever... :-(
cv.fit(X, y)

cv.grid_scores_

设置 n_jobs=1 它将起作用,将 n_jobs 设置为 >1 并且它永远不会完成。

我使用 Anaconda 发行版附带的 IPython Notebook。 Windows 8 x64 上的 IPython Notebook v3.2、Python v3.4。

PS.:这里是整个笔记本的要点 https://gist.github.com/anonymous/95b65991e96f5361404c

PPS。:我刚刚注意到“ipython notebook”进程在代码挂起时在控制台窗口中输出以下错误:
Process SpawnPoolWorker-12:
Traceback (most recent call last):
File "C:\Anaconda3\lib\multiprocessing\process.py", line 254, in _bootstrap
self.run()
File "C:\Anaconda3\lib\multiprocessing\process.py", line 93, in run
self._target(*self._args, **self._kwargs)
File "C:\Anaconda3\lib\multiprocessing\pool.py", line 108, in worker
task = get()
File "C:\Anaconda3\lib\site-packages\sklearn\externals\joblib\pool.py", line 363, in get
return recv()
File "C:\Anaconda3\lib\multiprocessing\connection.py", line 251, in recv
return ForkingPickler.loads(buf.getbuffer())
AttributeError: Can't get attribute 'DummyTransformer' on <module '__main__' (built-in)>

最佳答案

经过一番谷歌搜索后,我发现了以下 sklearn 问题:
https://github.com/scikit-learn/scikit-learn/issues/2889

amueller 说:

"Try not defining the metric in the notebook, but in a separate file and import it. I'd think that would fix it."



将 DummyTransformer 放入 utils.py 并在笔记本中使用“from utils import *”确实“修复”了它。不过,我宁愿称其为一种解决方法。

如果有人有更好/真正的解决方案,请添加答案!

关于python-3.x - 带有自定义转换器的并行 GridSearchCV 卡在 IPython 笔记本中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32734949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com