[英]Create dynamic array with very large size
我創建如下數組(行= 2649429,col = 17770,數組的大小為47,080,353,330〜470億)
double* a= new double [row*col];
錯誤如下
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
火車數據約為3GB。
請告訴我如何處理數組? 解決方案。 謝謝。
假設這是根據數組大小對https://www.kaggle.com/jieyima/netflix-recommendation-collaborative-filtering進行過濾的。
您需要使用某種稀疏數組。 例如,列表向量,您可以在其中列出每位客戶看過的電影。
那,或者您分批訓練,一次讀取一小部分數據。
如您所建議的,一個平面數組將大部分填充為0。這太低效了。 只有平均每個客戶看了一半的電影,這才有意義。
無論如何,使用double是一個非常糟糕的主意。 從1到5的評分適合一個字符或更少,可節省大量數據。
最后,請注意:
客戶ID的范圍為1到2649429,帶空格。 有480189個用戶。
您仍應使用稀疏結構。 但是,即使平放,也應該只有 480189行,而不是2649429行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.