Python 3.x IPython笔记本电脑中挂着带有自定义变压器的并行GridSearchCV
我在IPython笔记本中有代码,它使用sklearn的GridSearchCV和n_jobs=4为模型并行选择参数 在我将自定义变压器添加到管道中之前,它工作得很好。只要我在管道中添加一个定制的转换器,它就会开始“挂起”。。i、 e.即使CPU使用率降至零,进程也永远不会完成 当我设置n_jobs=1时,即使使用自定义变压器也可以正常工作 以下是重现问题的代码(将其复制并粘贴到IPython笔记本单元中): 设置n_jobs=1,它会工作;设置n_jobs为大于1,它将永远不会完成 我使用Anaconda发行版附带的IPython笔记本电脑。IPython笔记本电脑v3.2,Windows8x64上的Python v3.4 附:这是整个笔记本的要点 PPS.:我刚刚注意到,当代码挂起时,“ipython笔记本”进程在控制台窗口中输出以下错误:Python 3.x IPython笔记本电脑中挂着带有自定义变压器的并行GridSearchCV,python-3.x,scikit-learn,ipython-notebook,Python 3.x,Scikit Learn,Ipython Notebook,我在IPython笔记本中有代码,它使用sklearn的GridSearchCV和n_jobs=4为模型并行选择参数 在我将自定义变压器添加到管道中之前,它工作得很好。只要我在管道中添加一个定制的转换器,它就会开始“挂起”。。i、 e.即使CPU使用率降至零,进程也永远不会完成 当我设置n_jobs=1时,即使使用自定义变压器也可以正常工作 以下是重现问题的代码(将其复制并粘贴到IPython笔记本单元中): 设置n_jobs=1,它会工作;设置n_jobs为大于1,它将永远不会完成 我使用An
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)>
Process-worker-12:
回溯(最近一次呼叫最后一次):
文件“C:\Anaconda3\lib\multiprocessing\process.py”,第254行,在_bootstrap中
self.run()
文件“C:\Anaconda3\lib\multiprocessing\process.py”,第93行,正在运行
自我目标(*自我参数,**自我参数)
文件“C:\Anaconda3\lib\multiprocessing\pool.py”,第108行,在worker中
task=get()
文件“C:\Anaconda3\lib\site packages\sklearn\externals\joblib\pool.py”,get中第363行
返回recv()
recv中第251行的文件“C:\Anaconda3\lib\multiprocessing\connection.py”
返回ForkingPickler.load(buf.getbuffer())
AttributeError:无法在上获取属性“DummyTransformer”
在谷歌搜索之后,我发现了以下问题:
阿穆勒说:
尝试不在笔记本中定义度量,而是在单独的文件中定义
然后导入。我想这会解决它。”
将DummyTransformer放入utils.py并在笔记本中使用“from utils import*”,实际上“修复”了它。不过,我更愿意称之为变通办法
如果有人有更好的/真正的解决方案,请添加答案强>
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)>