Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pickle.PicklingError:Can';t pickle<;0x109217488处的函数预处理器>;:它';找不到作为主预处理器的_Python_Scikit Learn_Pickle - Fatal编程技术网

Python pickle.PicklingError:Can';t pickle<;0x109217488处的函数预处理器>;:它';找不到作为主预处理器的

Python pickle.PicklingError:Can';t pickle<;0x109217488处的函数预处理器>;:它';找不到作为主预处理器的,python,scikit-learn,pickle,Python,Scikit Learn,Pickle,我需要存储一个使用sklearn开发的机器学习分类器。我正在为此使用joblib包。我是这样做的: from sklearn.externals improt joblib #clf is defined above joblib.dump(clf,'test.clf') 我有以下错误: Traceback (most recent call last): File "svm_clf.py", line 333, in <module> my_svm_classifier

我需要存储一个使用sklearn开发的机器学习分类器。我正在为此使用joblib包。我是这样做的:

from sklearn.externals improt joblib

#clf is defined above
joblib.dump(clf,'test.clf')
我有以下错误:

Traceback (most recent call last):
  File "svm_clf.py", line 333, in <module>
  my_svm_classifier(get_best_model(), X, y, name="svm pos vs neg", plot=True)
  File "svm_clf.py", line 300, in my_svm_classifier
    joblib.dump(clf, 'neg.clf')
  File "//anaconda/lib/python2.7/site-packages/sklearn/externals/joblib/numpy_pickle.py", line 369, in dump pickler.dump(value)

...
...
...

pickle.PicklingError: Can't pickle <function preprocessor at 0x108301488>: it's not found as \__main\__.preprocessor
回溯(最近一次呼叫最后一次):
文件“svm_clf.py”,第333行,在
my_svm_分类器(获取最佳_模型(),X,y,name=“svm pos vs neg”,plot=True)
文件“svm_clf.py”,第300行,在my_svm_分类器中
joblib.dump(clf,'neg.clf')
文件“//anaconda/lib/python2.7/site packages/sklearn/externals/joblib/numpy_pickle.py”,第369行,在dump pickler.dump(value)中
...
...
...
pickle.PicklingError:无法pickle:找不到它作为\\uuu main \\uuuu.preprocessor

有什么帮助吗?

你有没有碰巧将名为
预处理器的函数定义为本地函数?有,亲爱的。这是一种帮助。它是在一个函数中定义的,基本上是一个子函数。为了避免成为子函数,我将其上移了一步,似乎工作得很好。谢谢。嗯,事实上那没用。我有两个错误:(1)pickle.PicklingError:无法pickle:它与\\u main\ u.preprocessor不是同一个对象。当我将“预处理器”设置为子函数时,会出现此错误。当我将此函数设置为全局函数时,在加载模块时出现以下错误:AttributeError:“module”对象没有属性“preprocessor”
\uuuuuu main\uuuu
在通过引用进行pickle时不被视为一级模块…因此,如果函数位于main中,pickle按名称引用函数,然后您将得到一个
PicklingError
。您应该尝试使用更好的序列化程序
dill
cloudpickle
,并像对待一等公民一样对待
\uuuuu main\uuuuu
。如果您在github上使用
dill
主机,只需说
import-dill
,它将覆盖
pickle
中的正常酸洗行为
dill
cloudpickle
还可以(通常)pickle函数所依赖的所有对象,并将它们与pickle一起使用(通过源代码或引用)。或者您可以将函数移动到单独的文件中;)您是否有可能将名为
预处理器
的函数定义为本地函数?是的,亲爱的。这是一种帮助。它是在一个函数中定义的,基本上是一个子函数。为了避免成为子函数,我将其上移了一步,似乎工作得很好。谢谢。嗯,事实上那没用。我有两个错误:(1)pickle.PicklingError:无法pickle:它与\\u main\ u.preprocessor不是同一个对象。当我将“预处理器”设置为子函数时,会出现此错误。当我将此函数设置为全局函数时,在加载模块时出现以下错误:AttributeError:“module”对象没有属性“preprocessor”
\uuuuuu main\uuuu
在通过引用进行pickle时不被视为一级模块…因此,如果函数位于main中,pickle按名称引用函数,然后您将得到一个
PicklingError
。您应该尝试使用更好的序列化程序
dill
cloudpickle
,并像对待一等公民一样对待
\uuuuu main\uuuuu
。如果您在github上使用
dill
主机,只需说
import-dill
,它将覆盖
pickle
中的正常酸洗行为
dill
cloudpickle
还可以(通常)pickle函数所依赖的所有对象,并将它们与pickle一起使用(通过源代码或引用)。或者您可以将函数移动到单独的文件中;)您是否有可能将名为
预处理器
的函数定义为本地函数?是的,亲爱的。这是一种帮助。它是在一个函数中定义的,基本上是一个子函数。为了避免成为子函数,我将其上移了一步,似乎工作得很好。谢谢。嗯,事实上那没用。我有两个错误:(1)pickle.PicklingError:无法pickle:它与\\u main\ u.preprocessor不是同一个对象。当我将“预处理器”设置为子函数时,会出现此错误。当我将此函数设置为全局函数时,在加载模块时出现以下错误:AttributeError:“module”对象没有属性“preprocessor”
\uuuuuu main\uuuu
在通过引用进行pickle时不被视为一级模块…因此,如果函数位于main中,pickle按名称引用函数,然后您将得到一个
PicklingError
。您应该尝试使用更好的序列化程序
dill
cloudpickle
,并像对待一等公民一样对待
\uuuuu main\uuuuu
。如果您在github上使用
dill
主机,只需说
import-dill
,它将覆盖
pickle
中的正常酸洗行为
dill
cloudpickle
还可以(通常)pickle函数所依赖的所有对象,并将它们与pickle一起使用(通过源代码或引用)。或者您可以将函数移动到单独的文件中;)