Scikit learn 基于并行网格搜索的Sklearn中随机命中Joblib异常

Scikit learn 基于并行网格搜索的Sklearn中随机命中Joblib异常,scikit-learn,Scikit Learn,我正在与n_jobs>1并行运行gridSearchCV,但在joblib中随机出现以下崩溃: TypeError:无法创建一致的方法解析 基本JoblibException、Exception的订单(MRO) 以下是完整的堆栈跟踪: Traceback (most recent call last): File "example_sklearn.py", line 92, in <module> main() File "example_sklearn.

我正在与n_jobs>1并行运行gridSearchCV,但在joblib中随机出现以下崩溃:

TypeError:无法创建一致的方法解析 基本JoblibException、Exception的订单(MRO)

以下是完整的堆栈跟踪:

      Traceback (most recent call last):
  File "example_sklearn.py", line 92, in <module>
    main()
  File "example_sklearn.py", line 76, in main
    ).fit(X_train, y_train)
  File "/usr/local/lib/python2.7/dist-packages/sklearn/grid_search.py", 
        line 372, in fit for clf_params in grid for train, test in cv)
  File "/usr/local/lib/python2.7/dist-packages/sklearn/externals/joblib/parallel.py",             
        line 516, in __call__self.retrieve()
  File "/usr/local/lib/python2.7/dist-packages/sklearn/externals/joblib/parallel.py", 
        line 448, in retrieve exception_type = _mk_exception(exception.etype)[0]
  File "/usr/local/lib/python2.7/dist-packages/sklearn/externals/joblib/my_exceptions.py", 
        line 61, in _mk_exception__str__=JoblibException.__str__),
TypeError: Cannot create a consistent method resolution
order (MRO) for bases JoblibException, Exception
回溯(最近一次呼叫最后一次):
文件“example_sklearn.py”,第92行,在
main()
文件“example_sklearn.py”,第76行,主目录
).fit(X_系列、y_系列)
文件“/usr/local/lib/python2.7/dist packages/sklearn/grid_search.py”,
第372行,适用于列车网格中的clf_参数,在cv中测试)
文件“/usr/local/lib/python2.7/dist-packages/sklearn/externals/joblib/parallel.py”,
第516行,在调用self.retrieve()中
文件“/usr/local/lib/python2.7/dist-packages/sklearn/externals/joblib/parallel.py”,
第448行,在retrieve exception\u type=\u mk\u exception(exception.etype)[0]
文件“/usr/local/lib/python2.7/dist packages/sklearn/externals/joblib/my_exceptions.py”,
第61行,in_umk_uexception_uustr_u=JoblibException.uu str_u),
TypeError:无法创建一致的方法解析
基本JoblibException、Exception的订单(MRO)

任何关于这到底是什么以及我如何调试它的指针。这是sklearn的已知问题吗?

我在使用
GridSearchCV
时遇到了完全相同的异常

如果您查看异常,它会抱怨无法理解它应该如何在两个父类
joblebexception
exception
之间进行选择。这是
joblib
包中的一个错误,即继承不正确

但除此之外,还有另一个问题,这就是异常本身的根源。它在
retrieve()
ing时得到一个异常,而在传递异常时,您得到了错误

第二个问题(这是异常的来源)似乎在以后版本的
joblib
中得到了修复。但是
scikit-learn
仍在使用旧版本(我将很快提交一个包含更改文件的拉取请求)

临时解决方法是使用安装自己版本的
joblib

easy_install joblib
然后转到
sklearn/exterlan
文件夹,删除/重命名
joblib
文件夹,并使用以下方法创建指向您自己的
joblib
的符号链接:

ln -s /path/to/joblib joblib 

编辑:似乎有人已经解决了这个问题。我的版本也很旧。

这不是一个已知问题,请提交一份错误报告,其中包含scikit learn的版本、操作系统的名称和版本,以及一个最低限度的脚本(随机生成的数据),如果是随机的,至少十次中有一次会触发错误。