/ / Clustering in Matlab - matlab, merge, cluster-computing, cluster-analysis, linkage

Agrupación en Matlab: matlab, fusión, cluster-computing, cluster-analysis, linkage

Hola, estoy tratando de agrupar usando linkage (). Aquí está el código que estoy tratando ..

 Y = pdist(data);
Z = linkage(Y);
T = cluster(Z,"maxclust",4096);

Estoy recibiendo el error de la siguiente manera

The number of elements exceeds the maximum allowed size in
MATLAB.
Error in ==> linkage at 135
Z = linkagemex(Y,method);

el tamaño de los datos es 56710 * 128. ¿Cómo puedo aplicar el código en pequeños fragmentos de datos y luego fusionar esos grupos de manera óptima? O cualquier otra solución al problema.

Respuestas

0 para la respuesta № 1

Matlab probablemente no puede agrupar tantos objetos con este algoritmo.

Lo más probable es que utilicen matrices de distancia en susimplementación. Una matriz de distancia por pares para 56710 objetos necesita 56710 * 56709/2 = 1,607,983,695 entradas, o aproximadamente 12 GB de RAM; muy probablemente también se necesita una copia de trabajo de esto. Lo más probable es que las estructuras de datos de Matlab predeterminadas no estén preparadas para manejar esta cantidad de datos (y no querrá esperar a que el algoritmo termine tampoco; probablemente es por eso que "permiten" solo una cierta cantidad).

Intente usar un subconjunto y vea qué tan bien se escala. Si usas 1000 instancias, ¿funciona? ¿Cuánto tiempo toma el cálculo? Si aumentas a 2000, ¿cuánto tiempo más tarda?