Pregunta

tengo curiosidad si alguien más ha funcionado en esto. Tengo un conjunto de datos con cerca de 350 k muestras, cada una con características 4k dispersos. La tasa de relleno disperso es de aproximadamente 0,5%. Los datos se almacenan en un objeto scipy.sparse.csr.csr_matrix, con dtype='numpy.float64'.

Estoy usando esto como una entrada al clasificador de regresión logística de sklearn. El documentación indica que las matrices de RSE dispersas son entradas aceptables para este clasificador. Sin embargo, cuando entreno el clasificador, me sale muy mal rendimiento de la memoria; el uso de la memoria de mis explota proceso de ~ 150 MB para llenar toda la memoria disponible y luego muele todo a un alto como intercambio de memoria en el disco se hace cargo.

¿Alguien sabe por qué este clasificador podría ampliar la matriz dispersa en una matriz densa? Estoy usando los parámetros por defecto para el clasificador por el momento, dentro de una distribución anacoda actualizada. Gracias!

scipy.__version__ = '0.14.0'
sklearn.__version__ = '0.15.2'
¿Fue útil?

Solución

Ok, esto terminó siendo una situación RTFM, aunque en este caso se trataba de mensaje de error RTF.

Mientras se ejecuta esto, seguí recibiendo el siguiente error:

DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().

I asumido que, dado que esto tenía que ver con el vector objetivo, y ya que era sólo una advertencia, que acaba de cambiar mi silencio vector objetivo a 1-D.

Sin embargo, cuando me convertí explícitamente mi vector objetivo a 1-D, mis problemas de memoria fueron. Al parecer tener el vector objetivo en una forma incorrecta provocó que convertir mis vectores de entrada en vectores densos de vectores dispersos.

lección aprendida:. seguir las recomendaciones cuando sklearn 'sugiere' haces algo

Licenciado bajo: CC-BY-SA con atribución
scroll top