mio programma R è come qui sotto:strano errore di Hierarchical Clustering in R
hcluster <- function(dmatrix) {
imatrix <- NULL
hc <- hclust(dist(dmatrix), method="average")
for(h in sort(unique(hc$height))) {
hc.index <- c(h,as.vector(cutree(hc,h=h)))
imatrix <- cbind(imatrix, hc.index)
}
return(imatrix)
}
dmatrix_file = commandArgs(trailingOnly = TRUE)[1]
print(paste('Reading distance matrix from', dmatrix_file))
dmatrix <- as.matrix(read.csv(dmatrix_file,header=FALSE))
imatrix <- hcluster(dmatrix)
imatrix_file = paste("results",dmatrix_file,sep="-")
print(paste('Wrinting results to', imatrix_file))
write.table(imatrix, file=imatrix_file, sep=",", quote=FALSE, row.names=FALSE, col.names=FALSE)
print('done!')
mio input è una matrice di distanza (ovviamente simmetrica). Quando eseguo sopra programma con una matrice di distanza maggiore di circa mille record (accadere nulla per diverse centinaia), mi ha dato il messaggio di errore:
Error in cutree(hc, h = h) :
the 'height' component of 'tree' is not sorted
(increasingly); consider applying as.hclust() first
Calls: hcluster -> as.vector -> cutree
Execution halted
La mia macchina ha circa 16 GB di RAM e 4CPU, quindi ha vinto' essere il problema delle risorse
Qualcuno può per favore fatemi sapere qual è il problema? Grazie!!
Ingenuamente implementato, il clustering gerarchico ha 'O (n^3)' complessità (infatti, il noto 'O (n^2)' algoritmi sono solo per alcune versioni specializzate, vedere 'SLINK',' CLINK '). Potrebbe effettivamente da un problema di complessità, sebbene l'errore non assomigli a questo. –
Mi piacerebbe approfondire, coud pubblichi l'esempio di dmatrix_file e diamo indicazioni su come scalare? –
Accetto con Peter: non è possibile rendere disponibile dmatrix_file o un dataset fittizio con le stesse dimensioni? – geotheory