在并行网格搜索的 Sklearn 中随机命中 Joblib 异常



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

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

但除此之外,还存在另一个问题,即异常本身的来源。它在retrieve()时出现异常,在传递异常时,您会收到错误。

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

临时解决方法是joblib使用

easy_install joblib

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

ln -s /path/to/joblib joblib 

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

相关内容

  • 没有找到相关文章