Я пытаюсь найти 5000 центральных точек огромного набора данных. Мой входной массив [5000000] [512] означает много векторов с размером 512. C ++ имеет ограничение на размер массива, и я не могу преодолеть это. Я хотел использовать функцию opencv kmeans.
Любая идея???
Договорились с парнями выше. Реальный вопрос в том, что у вас действительно есть такой ноутбук / настольный компьютер с такой огромной памятью. Если ответ «Да», вы можете просто написать программы на С для выполнения этой работы. В противном случае вам может потребоваться найти распределенное решение, например Mahout на Hadoop. Другой вариант заключается в том, что вы можете каким-то образом взять выборку из всех данных и выполнить кластеризацию на выборке, если это соответствует вашим требованиям.
В итоге я использовал мини-пакетные kmeans, которые отбирают данные для пакетов. Кроме того, матрица была очень разреженной, так что добавление разреженного представления матрицы сделало свое дело.