Здесь нет простого решения для точного ответа. Проблема в том, что Armadillo (базовая матричная библиотека) не может выделить достаточно места для ваших входных данных.
По большей части mlpack более консервативен с оперативной памятью, чем другие инструменты, такие как MATLAB или R, но похоже, что ваш набор данных достаточно велик, чтобы ваши возможности (не доставляя систему с большей оперативной памятью, как предполагал Керрек) были ограничены ,
Многие стратегии ускорения k-средств включают в себя выборку входного набора данных и выполнение k-средних на подмножестве входных точек. Поскольку k-средство очень чувствительно к начальным центроидам, которые ему даны, эта стратегия выборки часто используется для выбора начальных центроидов. См. Bradley and Fayyad, 1998: ftp://www.ece.lsu.edu/pub/aravena/ee7000FDI/Presentations/Clustering-Pallavi/Ref4_k-means.pdf
В вашем случае, может быть, это проще и достаточно точно, чтобы просто запустить k-средство для подмножества ваших данных, которые могут быть загружены в ОЗУ, и взять их в качестве ваших центроидов кластера. Если k достаточно мало и количество точек в вашем наборе данных велико (то есть количество кластеров намного меньше количества точек), тогда это должен быть разумный подход и, конечно, более простой подход, чем изменение mlpack, чтобы быть более консервативным с ОЗУ или писать собственную программу, чтобы использовать mmap() или что-то еще, и дешевле, чем покупать новую RAM.
Выложить деньги за дополнительную оперативную память? –
Ну, сообщение «из памяти» означает, что вы, ну, вне памяти, и это не странно для такого ввода. Чтобы завершить то, что вы делаете, вам придется изменить алгоритм, например. вы можете загружать данные в память по частям. – grzkv