/ / Clustering в Matlab - matlab, сливане, клъстерно изчисление, клъстър-анализ, свързване

Групиране в Matlab - matlab, сливане, клъстерно-изчислителни, клъстър-анализ, свързване

Здравейте аз се опитвам да клъстер използва 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, колко дълго ще отнеме?