Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.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 将scikit学习管道保存到文件_Python_Scikit Learn - Fatal编程技术网

Python 将scikit学习管道保存到文件

Python 将scikit学习管道保存到文件,python,scikit-learn,Python,Scikit Learn,如何将经过培训的scikit学习管道保存到本地文件?官方文件说: 但是当试图保存管道时,我得到了一个错误。例如: estimators = [ ('tfidf', TfidfVectorizer(tokenizer=lambda string: string.split(), min_df=20, max_df=0.75,

如何将经过培训的scikit学习管道保存到本地文件?官方文件说:

但是当试图保存管道时,我得到了一个错误。例如:

estimators = [
    ('tfidf', TfidfVectorizer(tokenizer=lambda string: string.split(),
                             min_df=20, 
                             max_df=0.75,
                             ngram_range=(1,1))),
    ('clf', RandomForestClassifier(n_estimators=100,
                                   n_jobs=-1, 
                                   class_weight='balanced'))
]

p = Pipeline(estimators)
p.fit(x_train, y_train)

model = 'model.joblib'
joblib.dump(p, model)
但是,我收到错误消息“PicklingError:无法在0x7f4c9f1e50d0>处进行pickle:找不到它作为main


我怎样才能解决这个问题?

对不起,各位问了这个问题。我找到了解决办法:

不过,并非所有内容都可以(轻松地)进行pickle:例如生成器、内部类、lambda函数和defaultdict。对于lambda函数,您需要使用一个名为dill的附加包。对于defaultdicts,您需要使用模块级函数创建它们


来源:

您是否尝试了
json.dump
而不是joblib?然后您可以关闭它。(尽管我认为其中一些线程是开放的,以供参考)