我正在与n_jobs> 1并行运行gridSearchCV,但在joblib中随机遇到以下崩溃:
类型错误: 无法创建一致的方法解析订单 (MRO) for base JoblibException, Exception
以下是完整的堆栈跟踪:
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 的已知问题吗
我遇到了完全相同的异常,正是在使用GridSearchCV
时。
如果您查看异常,它会抱怨无法理解它应该如何在两个父类之间进行确切的选择 JoblibException
和 Exception
.这是joblib
包中的一个错误,即继承不当。
但除此之外,还存在另一个问题,即异常本身的来源。它在retrieve()
时出现异常,在传递异常时,您会收到错误。
第二个问题(这是异常的来源)似乎在joblib
的更高版本中得到了修复。但是scikit-learn
仍在使用旧版本(我将很快提交包含更改文件的拉取请求)。
临时解决方法是joblib
使用
easy_install joblib
然后转到sklearn/exterlan
文件夹,删除/重命名joblib
文件夹,并使用以下命令创建指向您自己的joblib
的符号链接:
ln -s /path/to/joblib joblib
编辑:似乎有人已经解决了这个问题。我的版本也很旧。