在iPython中序列化我的scikit-learn(sklearn)网格搜索分类器时出现问题

3

我在 iPython 中运行了下面的网格搜索分类器:

http://scikit-learn.org/dev/auto_examples/grid_search_digits.html

然后尝试使用pickle对其进行序列化,但出现了以下错误追踪信息:

In [6]: with open('clf.pkl', 'wb') as f:
    cPickle.dump(clf, f)
   ...:     
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-6-577559be619c> in <module>()
      1 with open('clf.pkl', 'wb') as f:
----> 2     cPickle.dump(clf, f)
      3 

/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/copy_reg.pyc in     _reduce_ex(self, proto)
     68     else:
     69         if base is self.__class__:
---> 70             raise TypeError, "can't pickle %s objects" % base.__name__
     71         state = base(self)
     72     args = (self.__class__, base, state)

TypeError: can't pickle instancemethod objects

有什么解决方法吗?
我正在使用最新版本的iPython和sklearn。
谢谢 :)

2
请问您能否编辑您的问题,告诉我们您正在尝试pickle的sklearn类的确切名称以及完整的traceback信息? - ogrisel
1个回答

1

网格搜索分类器用于保留创建了Pickle问题的所有估算器。这个问题之前已经注意到并且已经解决。这个补丁注释表明您只需对best_estimator_进行Pickling即可对分类器进行Pickling。在您的情况下,应该是:

cPickle.dump(clf.best_estimator_, f)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接