[R-es] Error K-MEDIAS, paquete NbClust windows 10, 64 bits

Carlos Ortega cof en qualityexcellence.es
Lun Ene 16 22:49:46 CET 2017


Hola,

Sí puedes hacer esto:

A) De lo que te propone Carlos Gil.
Hacer un muestro de tus datos, empezando con poca cantidad de datos y
generar tu NBClust.
Cómo hago un muestreo, te pongo un ejemplo con un 10% de los datos:

#----------
perc_mu <- 0.1
rows_mu <- sample(1:nrow(datos_iniciales),  round(0.1 *
 nrow(datos_iniciales,0)), replace = FALSE)
datos_muestra <- datos_iniciales[ rows_mu , ]
datos_scaled <- dist(datos_muestra)
nb <- NBClust......

#----------

Si con el 10% funciona, lo vuelves a ejecutar con "perc_mu <- *0.5*"... y
vas subiendo hasta que obtengas el error.

B) Lo que te propongo yo:

   1. Apago el ordenador.
   2. Arranco el ordenador.
   3. Abro RGui (no RStudio) y no abro ninguna aplicación más en el
   ordenador.
   4. Ejecuto el código tal y cual lo tienes.
   5. Si en el punto anterior obtengo error (que seguramente lo obtenga)
   ejecuto "gc()" dentro de R, que lo que hará es limpiar todos los datos que
   tengas en memoria. O vaya, lo mejor sal de RGui y vuelve a entrar.
   6. y prueba con este código

#--------------
nb <- vector(rep(0, 420485500))
... tu código...
#--------------

Con la línea primera lo que hago es llenar nb del mismo número de ceros que
te va a llenar tu cálculo de distancias sobre tu matriz de "29000 x 23". De
esta forma, se reserva este espacio para "nb". Cuando haces luego el
cálculo con "NBClust()" la salida no tendrá que buscar espacio en RAM si no
que la volcará sobre el espacio que ya tiene "nb".

He probado este código en mi máquina (Mac con 8Gb de RAM):

#----------

n_row <- 29000
n_col <- 23
my_mat <- matrix(rnorm(n_row * n_col), nrow = n_row , ncol = n_col)
my_mat_dis <- dist(my_mat)
#----------

Y el espacio que ocupa cada objeto es:

   - "my_mat" ocupa 5.1 Mb.
   - y "my_mat_dis" ocupa 3.1Gb (son 420485500 elementos).


Por eso me parece extraño que en tu caso no puedas manejar estos objetos.
¿Estás usando una versión de R de 32 ó 64 bits?...

Como tu Windows lo permite, al instalar R, te instalará las dos. Repite
todo este código que hemos comentado con el R-64bit (tendrás un acceso
directo en tu escritorio).

Saludos,
Carlos Ortega
www.qualityexcellence.es

El 16 de enero de 2017, 18:21, Cesar Vanegas Castro <
Ing.CesarVanegas en hotmail.com> escribió:

> Cordial Saludo.
>
>
> Muchas gracias por las respuestas
>
>
> En realidad no tengo mucha experiencia con este error, y tampoco con R,
> estoy intentando aplicar las soluciones que me proponen, pero creo que no
> lo estoy haciendo bien, podrian porfavor ser un poco mas especificios,
> muchas gracias.
>
>
> -en el caso de la respuesta de vegeta8504, intente modificando el codigo
> con el vector asi.
> nb <- NbClust(datos.scaled, distance = "euclidean", min.nc = 2,
>         max.nc = 10, method = "complete", index =c("kl", "ch",
> "hartigan", "ccc", "scott", "marriot", "trcovw", "tracew", "friedman",
> "rubin", "cindex", "db", "silhouette", "duda", "pseudot2", "beale",
> "ratkowsky", "ball", "ptbiserial", "gap", "frey", "mcclain", "gamma",
> "gplus", "tau", "dunn", "hubert", "sdindex", "dindex", "sdbw")), pero me
> genera el mismo error.
>
> -el que me propone Carlos J. Gil Bellosta, en realidad no se como
> aplicarlo
>
> y el que me propone Carlos Ortega , la parte del gc(), misdatos son estos
>
> used (Mb) gc trigger   (Mb)  max used   (Mb)
> Ncells  3780595  202    6861544  366.5   6861544  366.5
> Vcells 23985417  183  767099548 5852.6 836729210 6383.8
>
>
> pero no se que mas hacer de ahi.
>
>
>    - gc() - para activar el garbage collector.
>    - Y podrías pre-dimensionar ("allocate") un vector de 2Gb con el mismo
>    nombre de la variable "nb" para que "NbClust" cuando genere su salida ya
>    encuentre un espacio reservado en esa variable.
>
>
> Gracias por su ayuda
>
> cesar
>
>
>
>
>
> ------------------------------
> *De:* vegeta8504 . <vegeta8504 en gmail.com>
> *Enviado:* lunes, 16 de enero de 2017 11:26 a. m.
> *Para:* Carlos J. Gil Bellosta
> *Cc:* r-help-es en r-project.org; Cesar Vanegas Castro
> *Asunto:* Re: [R-es] Error K-MEDIAS, paquete NbClust windows 10, 64 bits
>
>
> Lo que pasa es que utilizas "all" en index y te corre todos los métodos y
> hay métodos para datos binarios no binarios y creo que para otros tipos de
> datos. Dependiendo de tus datos debes utilizar los métodos que te sirvan
> para tú problema. Esto lo ves en la ayuda, yo pegué los nombres de los
> métodos desde la ayuda y lo escribí en R en forma de vector y así descarté
> los que no me servian. Saludos
> El 16/01/2017 13:02, "Carlos J. Gil Bellosta" <cgb en datanalytics.com>
> escribió:
>
>> Hola, ¿qué tal?
>>
>> Si R crea la matriz de distancias necesitarás, como poco, 29*29*8 MB
>> de RAM. Puede ser mucho para tu equipo. Trata de correr el código
>> usando subconjuntos de datos (1%, 5%, 10%, etc.) para ver desde fuera
>> cuánta RAM estás consumiendo.
>>
>> Salud,
>>
>> Carlos J. Gil Bellosta
>> http://www.datanalytics.com
>>
>> El día 16 de enero de 2017, 16:32, Cesar Vanegas Castro
>> <Ing.CesarVanegas en hotmail.com> escribió:
>> > Buenos dias, desde hace algunos dias estoy realizando un trabajo,mi
>> computadora es una DELL, windows 10 64 bits, 8G de RAM y disco de estado
>> solido, estoy procesando 29000 filas y 23 columnas, mi codigo es este:
>> >
>> > nb <- NbClust(datos.scaled, distance = "euclidean", min.nc = 2,
>> >         #max.nc = 10, method = "complete", index ="all")
>> > .
>> >
>> > y mi error es este:
>> >
>> > Error: cannot allocate vector of size 2.0 Gb
>> >
>> >
>> > Gracias
>> >
>> >
>> >
>> >         [[alternative HTML version deleted]]
>> >
>> > _______________________________________________
>> > R-help-es mailing list
>> > R-help-es en r-project.org
>> > https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>> _______________________________________________
>> R-help-es mailing list
>> R-help-es en r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>


-- 
Saludos,
Carlos Ortega
www.qualityexcellence.es

	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es