[英]How to cluster very big sparse data set using low memory in Python?
[英]How to cluster big data using Python or R without memory error?
我正在嘗試對包含大約 1,100,000 個觀察值的數據集進行聚類,每個觀察值具有三個值。
R
中的代碼非常簡單:
df11.dist <-dist(df11cl)
,其中 df11cl 是 dataframe 具有三列和 1,100,000 行,並且此數據框中的所有值都是標准化的。
我得到的錯誤是: Error: cannot allocate vector of size 4439.0 Gb
對類似問題的建議包括增加 RAM 或分塊數據。 我已經有 64GB RAM,而我的虛擬 memory 是 171GB,所以我不認為增加 RAM 是一個可行的解決方案。 此外,據我所知,分層數據分析中的分塊數據會產生不同的結果。 因此,使用數據樣本似乎是不可能的。
我也找到了這個解決方案,但答案實際上改變了問題。 他們在技術上建議 k-means。 如果事先知道集群的數量,K-means 就可以工作。 我不知道集群的數量。 也就是說,我使用不同數量的集群運行 k-means,但現在我不知道如何證明選擇一個到另一個是合理的。 有什么可以幫助的測試嗎?
您能推薦R
或python
中的任何內容嗎?
由於瑣碎的原因,function dist
需要二次 memory。
因此,如果您有 100 萬 (10^6) 個點,則二次矩陣需要 10^12 個條目。 使用雙精度,每個條目需要 8 個字節。 有了對稱性,您只需要存儲一半的條目,仍然是 4*10^12 字節,即 4 TB 僅用於存儲此矩陣。 即使您將其存儲在 SSD 上或將系統升級到 4 TB RAM,計算所有這些距離也將花費大量時間。
100萬仍然很小,不是嗎?
在大數據上使用dist
是不可能的。 故事結局。
對於更大的數據集,您需要
特別是如果您還沒有可行的解決方案,最后一件事是個好主意。 與不起作用的方法的可伸縮性作斗爭是沒有用的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.