簡體   English   中英

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

[英]How to efficiently serialize a scikit-learn classifier

什么是序列化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())),
])

對於大型文本數據集,使用散列技巧:用TfidfVectorizer替換HashingVectorizer (可能與管道中的TfidfTransformer堆疊):pickle會快得多,因為你不必再存儲詞匯dict了,如上所述在這個問題中:

如何減少Scikit-Learn Vectorizers的內存使用量?

您還可以使用joblib.dump並傳入壓縮。 我注意到我的分類器pickle轉儲使用選項compress = 3減少了~16倍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM