1

J'essaie d'exécuter l'exercice de clustering dans R. L'algorithme que j'ai utilisé est apcluster(). Le script que j'ai utilisé est:apcluster dans R: limitation de la mémoire

s1  <- negDistMat(df, r=2, method="euclidean") 
apcluster <- apcluster(s1) 

Mon jeu de données contient environ 0,1 million de lignes. Quand je courais le script, je suis l'erreur suivante:

Error in simpleDist(x[, sapply(x, is.numeric)], sel, method = method, : negative length vectors are not allowed

Quand je cherchai en ligne, je trouve que l'erreur négative longueur de vecteur se produit en raison de la limite de mémoire de ma RAM. Ma question est s'il y a une solution pour exécuter apcluster() sur mon jeu de données avec 0,1 million de lignes avec la RAM disponible, ou est-ce que je manque quelque chose que je devrais faire attention en exécutant apcluster dans R?

J'ai une machine avec 8 Go de RAM.

+0

Sur les ensembles de données de cette taille, vous ne voulez pas utiliser d'algorithmes qui ont besoin de la mémoire O (n²) et même de l'heure O (n³). Au lieu de cela, essayez le paquet 'dbscan', par exemple. –

Répondre

0

La version standard de la propagation par affinité implémentée dans la méthode apcluster() ne sera jamais exécutée avec succès sur des données de cette taille. D'une part, la matrice de similarité (s1 dans votre échantillon de code) aura 100K x 100K = 10G entrées. D'autre part, les temps de calcul seront excessifs. Je vous suggère d'utiliser apclusterL() à la place.