2013-07-08 81 views
3

TFIDFVectorizer需要大量內存,向量化470 MB的100k文檔需要6 GB以上的空間,如果我們使用2100萬個文檔,將無法容納60 GB的RAM。如何減少Scikit-Learn Vectorizers的內存使用量?

所以我們去HashingVectorizer,但仍然需要知道如何分配散列矢量。適合和部分適合什麼都不做,所以如何與巨大的語料庫工作?

回答

8

我強烈建議您在大數據集上擬合模型時使用HashingVectorizer

HashingVectorizer與數據無關,只有來自vectorizer.get_params()的參數非常重要。因此(不)酸洗`HashingVectorizer實例應該非常快。

基於詞彙的矢量化器更適合小數據集的探索性分析。

+0

非常好,我發現了這一點:http://t.co/12cFDYlTil和測試。我們可以使用無監督學習(KMeans)嗎? –

+0

在TFIDFVectorizers上,我們可以使用隨機PCA進行繪圖,但是HashingVectorizer的輸出是不同的?我們該如何做Scatterplot? –

+0

爲什麼會有所不同?隨機PCA可以將任何稀疏矩陣作爲輸入,它以什麼方式生成。 – ogrisel

0

克服HashingVectorizer無法解釋IDF的一種方法是將數據索引到elasticsearch或lucene中,並從那裏檢索可使用Tf-IDF計算的termvector。