Здравейте аз се опитвам да клъстер използва linkage (). Ето кода, който се опитвам ..
Y = pdist(data);
Z = linkage(Y);
T = cluster(Z,"maxclust",4096);
Получавам грешка както следва
The number of elements exceeds the maximum allowed size in
MATLAB.
Error in ==> linkage at 135
Z = linkagemex(Y,method);
размерът на данните е 56710 * 128. Как мога да приложа кода на малки парчета данни и след това да слея оптимално тези клъстери? Или друго решение на проблема.
Отговори:
0 за отговор № 1Вероятно Matlab не може да сглоби толкова много обекти с този алгоритъм.
Най-вероятно те използват дистанционни матрици в своитеизпълнение. Двойно матрично разстояние за 56710 обекта се нуждае от 56710 * 56709/2 = 1,607,983,695 записа или около 12 GB RAM; най-вероятно е необходимо и работно копие от това. Шансовете са, че стандартните структури от данни на Matlab не са подготвени да обработват това количество данни (и няма да искате да чакате алгоритъмът да завърши; вероятно това е причината те да "разрешават" само определена сума).
Опитайте се да използвате подмножество и да видите колко добре се мащабира. Ако използвате 1000 случая, работи ли? Колко време отнема изчислението? Ако увеличите до 2000, колко дълго ще отнеме?