簡體   English   中英

使用Scikit-Learn和Gensim的SVD具有600萬個功能

[英]SVD using Scikit-Learn and Gensim with 6 million features

我試圖根據他們的情緒對段落進行分類。 我有60萬份文件的培訓數據。 當我將它們轉換為Tf-Idf向量空間時,單詞作為分析器,ngram范圍為1-2,有近600萬個特征。 所以我必須做奇異值分解(SVD)來減少特征。

我嘗試過gensim和sklearn的SVD功能。 兩者都可以正常工作,直到100減少功能,但是當我嘗試200個功能時,它們會引發內存錯誤。

另外我還沒有使用整個文檔(60萬)作為訓練數據,我只采用了50000個文檔。 基本上我的訓練矩陣是:50000 * 600萬,並希望將其減少到50000 *(100到500)

有沒有其他方法可以在python中實現它,或者我是否必須實現sparks mllib SVD(僅針對java和scala編寫)? 如果是的話,會有多快?

系統規格:ubuntu 14.04上帶有4個核心處理器的32 Gb RAM

我真的不明白為什么使用spark mllib SVD可以提高性能或避免內存錯誤。 您只需超過RAM的大小。 你有一些選擇來處理:

  • 減少tf-idf的字典大小(例如,使用scikit-learn的max_df和min_df參數)。
  • 使用散列矢量化器而不是tf-idf。
  • 獲得更多RAM(但在某些時候tf-idf + SVD不可擴展)。

你也應該展示你的代碼示例,你可能在你的python代碼中做錯了。

暫無
暫無

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

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