如何有效地序列化scikit-learn分类器

Cer*_*rin 6 python machine-learning pickle scikit-learn

什么是序列化scikit-learn分类器的最有效方法?

我目前正在使用Python的标准Pickle模块来序列化文本分类器,但这会导致一个巨大的泡菜.序列化对象可能是100MB或更多,这似乎过多,需要一段时间来生成和存储.我已经完成了与Weka类似的工作,等效的序列化分类器通常只有几MB.

scikit-learn可能会在pickle中缓存训练数据或其他无关信息吗?如果是这样,我怎样才能加快并减少序列化scikit-learn分类器的大小?

classifier = Pipeline([
    ('vectorizer', CountVectorizer(ngram_range=(1,4))),
    ('tfidf', TfidfTransformer()),
    ('clf', OneVsRestClassifier(LinearSVC())),
])
Run Code Online (Sandbox Code Playgroud)

ogr*_*sel 5

对于大型文本数据集,请使用哈希技巧:将TfidfVectorizera 替换为HashingVectorizer(可能TfidfTransformer在管道中以a堆叠):腌制的速度会更快,因为您不必再​​存储词汇字典了(如本问题所述) :

如何减少Scikit-Learn矢量化器的内存使用量?