Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x IPython笔记本电脑中挂着带有自定义变压器的并行GridSearchCV_Python 3.x_Scikit Learn_Ipython Notebook - Fatal编程技术网

Python 3.x IPython笔记本电脑中挂着带有自定义变压器的并行GridSearchCV

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

我在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笔记本”进程在控制台窗口中输出以下错误:

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)>