Según lo mencionado por otros, la agrupación jerárquica necesita calcular la matriz de distancia pairwise que es demasiado grande para caber en la memoria en su caso.
intente utilizar el algoritmo K-medias en su lugar:
numClusters = 4;
T = kmeans(X, numClusters);
alternativa, puede seleccionar un subconjunto aleatorio de sus datos y utilizar como entrada para el algoritmo de agrupamiento. A continuación, calcula los centros del clúster como media/mediana de cada grupo de clústeres. Finalmente, para cada instancia que no fue seleccionada en el subconjunto, simplemente calcula su distancia a cada centroides y la asigna a la más cercana.
Aquí hay un código de ejemplo para ilustrar la idea anterior:
%# random data
X = rand(25000, 2);
%# pick a subset
SUBSET_SIZE = 1000; %# subset size
ind = randperm(size(X,1));
data = X(ind(1:SUBSET_SIZE), :);
%# cluster the subset data
D = pdist(data, 'euclid');
T = linkage(D, 'ward');
CUTOFF = 0.6*max(T(:,3)); %# CUTOFF = 5;
C = cluster(T, 'criterion','distance', 'cutoff',CUTOFF);
K = length(unique(C)); %# number of clusters found
%# visualize the hierarchy of clusters
figure(1)
h = dendrogram(T, 0, 'colorthreshold',CUTOFF);
set(h, 'LineWidth',2)
set(gca, 'XTickLabel',[], 'XTick',[])
%# plot the subset data colored by clusters
figure(2)
subplot(121), gscatter(data(:,1), data(:,2), C), axis tight
%# compute cluster centers
centers = zeros(K, size(data,2));
for i=1:size(data,2)
centers(:,i) = accumarray(C, data(:,i), [], @mean);
end
%# calculate distance of each instance to all cluster centers
D = zeros(size(X,1), K);
for k=1:K
D(:,k) = sum(bsxfun(@minus, X, centers(k,:)).^2, 2);
end
%# assign each instance to the closest cluster
[~,clustIDX] = min(D, [], 2);
%#clustIDX(ind(1:SUBSET_SIZE)) = C;
%# plot the entire data colored by clusters
subplot(122), gscatter(X(:,1), X(:,2), clustIDX), axis tight

solución de Niza, me gusta. – Donnie
Gracias por su respuesta integral, La razón por la que estoy usando la agrupación jerárquica es que no sé cuántos clústeres necesito de antemano. En kmeans tengo que definir desde el principio, y debido a la naturaleza de mi proyecto no me es posible usar Kmeans. Gracias de todos modos ... – Hossein
@Hossein: Cambié el código para usar un valor 'cutoff' para encontrar el mejor número de clusters sin especificarlo de antemano ... – Amro