1

我正在与 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

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

4

1 回答 1

2

我有完全相同的例外,正是在使用GridSearchCV.

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

但除此之外,还有一个问题,就是异常本身的来源。它在retrieve()ing 时出现异常,而在传递异常时,您会收到错误消息。

第二个问题(这是异常的根源)似乎在更高版本的joblib. 但scikit-learn仍在使用旧版本(我将很快提交带有更改文件的拉取请求)。

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

easy_install joblib

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

ln -s /path/to/joblib joblib 

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

于 2014-02-18T17:35:15.937 回答