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

时间:2013-09-14 01:19:58

标签: scikit-learn

我正在与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的已知问题

1 个答案:

答案 0 :(得分:2)

在使用GridSearchCV时,我有完全相同的异常。

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

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

第二个问题(例外的来源)似乎在joblib的更高版本中得到修复。但是scikit-learn仍在使用旧版本(我将尽快提交带有更改文件的拉取请求)。

临时解决方法是使用

安装您自己的joblib版本
easy_install joblib

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

ln -s /path/to/joblib joblib 

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