2013-07-05 22 views
-2

這裏時的設置:的MemoryError使用Python中sklearn .fit()和大稀疏矩陣(當前與布爾功能)

數量的類:1806

訓練數據長度是61499

數的功能是40473(這些目前是布爾值,雖然這可能會在某些時候發生變化)

平均而言,每個訓練數據在行中有10 1個,因此40463 0(我使用scipy的稀疏矩陣)。

我已經嘗試了各種各樣的學習習慣(linearsvc獲得最佳性能,並且sgdclassifier似乎是性能僅略低於linearsvc的最高效率)和一些降維(pca,svd),但是我懷疑我設置矩陣的方式有什麼問題? (或者只是一種更好的方式,因爲這種方法在類/特徵/數據少得多時起作用)

任何想法都不勝感激。

(編輯:也嘗試sgdclassifier的.partial_fit(),它甚至有兩個電話花了太長了,所以我沒有讓它結束)

+1

您提到使用PCA/SVD。你是否以這樣的方式來做到這一點:所得矩陣仍然稀疏?如果您減去PCA中通常所做的平均值,您的矩陣可能不會再有任何零。 – Dougal

回答

0

的MemoryError通常,當您用完可尋址內存的發生。如果您正在運行32位python,則通常可以通過使用64位python來避免此錯誤。有關發生這種情況的詳細信息,請參閱here

+0

固定它 - 謝謝,那麼多:) – user2553999

+0

我把它加了一遍以獲得更多的訓練數據並再次打出MemoryError - >數量分類:6578 訓練數據長度爲225065 特徵數量爲100529 出錯〜 4.8 gb - 任何想法(除了更多的RAM)? – user2553999

+0

您是否正在運行64位OS *和* 64位Python?另外,你有多少內存和交換空間?爲了確保我理解你的數字,你是否想要創建一個具有'225065 * 1000529'元素的數據矩陣? – bogatron