[英]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了,如上所述在這個問題中:
您還可以使用joblib.dump並傳入壓縮。 我注意到我的分類器pickle轉儲使用選項compress = 3減少了~16倍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.