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