Software para construir un modelo de regresión con CSV de 3,5 GB en una PC con poca memoria

Tengo un archivo .csv con 3,5 GB de datos (alrededor de 8 millones de filas y 86 columnas) y necesito crear un modelo de regresión en este conjunto de datos.

La cuestión es que solo tratar de leer el CSV usando pandas, y luego realizar cualquier tipo de operación en él (incluso solo tomando el número de filas), lleva una cantidad de tiempo ridícula. Entonces, considerando que necesito visualizar los datos para saber cómo se ven, luego preprocesarlos, etc., realmente no creo que sea factible hacerlo de la misma manera que siempre lo he hecho para archivos con 50-100 MB. eso.

Traté de buscar en el módulo de multiprocesamiento de python , pero aunque me ayudó a calcular el número de filas, no veo que me ayude con la mayoría de las otras cosas que necesito hacer (como construir el modelo, por ejemplo).

Entonces, ¿alguien sabe cómo debo abordar esto? Lo estoy haciendo en un cuaderno de python.

En R, hay algunos paquetes creados para manejar grandes conjuntos de datos de un solo archivo, vea esta publicación
La sugerencia obvia sería hacerlo en otra PC. ¿Puedes hacer eso? Además, ¿es esto solo una vez o es algo recurrente?

Respuestas (2)

Echa un vistazo a la biblioteca de Dask. ( http://dask.pydata.org/en/latest/ ). Extiende las matrices DataFrames y Numpy de pandas para un cálculo más grande que la memoria.

Aquí hay una publicación de blog sobre el uso de Dask con scikit-learn: https://www.continuum.io/blog/developer-blog/dask-and-scikit-learn-3-part-tutorial

Tiene muy buena pinta, sin duda le echaré un vistazo!

Varias sugerencias:

  • Elimine las filas que no necesite. Quizás algunos no sean relevantes para el modelo.
  • Elimine las columnas que no necesita, por ejemplo, las que son constantes o de baja variación o simplemente no importantes
  • Cambie todos los int64 y flotantes a int8 (SI encajan)
  • Tome una muestra de filas
  • Utilice la reducción de características, por ejemplo, PCA si puede; o un método univariado como chi2
Si bien reconozco que estas son buenas cosas para hacer que mis datos sean más pequeños, todavía es algo que llevará bastante tiempo ejecutar. Tenía la esperanza de poder hacer algo antes de esa etapa, exactamente para poder hacer el preprocesamiento más rápido. Es por eso que estaba pensando en usar la nube, pero no estaba seguro de qué usar exactamente.