usa programación programacion porque para mejor machine lenguajes learning for data cual contra big analisis python scipy sas hdf5 h5py

programación - r vs python cual es mejor



¿Experiencia con el uso de h5py para realizar trabajo analítico sobre Big Data en Python? (2)

Hago mucho trabajo estadístico y uso Python como mi idioma principal. Sin embargo, algunos de los conjuntos de datos con los que trabajo pueden tomar 20 GB de memoria, lo que hace que sea casi imposible operarlos usando funciones en memoria en numpy, scipy y PyIMSL. El lenguaje de análisis estadístico SAS tiene una gran ventaja aquí ya que puede operar con datos del disco duro en lugar de procesar estrictamente en la memoria. Pero, quiero evitar tener que escribir una gran cantidad de código en SAS (por una variedad de razones) y, por lo tanto, estoy tratando de determinar qué opciones tengo con Python (además de comprar más hardware y memoria).

Debo aclarar que los enfoques como map-reduce no ayudarán en gran parte de mi trabajo porque necesito operar en conjuntos completos de datos (por ejemplo, computar cuantiles o ajustar un modelo de regresión logística).

Recientemente comencé a jugar con h5py y creo que es la mejor opción que he encontrado para permitir que Python actúe como SAS y opere con los datos del disco (a través de archivos hdf5), al mismo tiempo que puede aprovechar numpy / scipy / matplotlib, etc. me gustaría saber si alguien tiene experiencia en el uso de Python y h5py en una configuración similar y en lo que han encontrado. ¿Alguien ha podido usar Python en configuraciones de "big data" hasta ahora dominadas por SAS?

EDITAR: comprar más hardware / memoria ciertamente puede ayudar, pero desde una perspectiva de TI es difícil para mí vender Python a una organización que necesita analizar enormes conjuntos de datos cuando Python (o R, o MATLAB, etc.) necesita contener datos en la memoria . SAS continúa teniendo un fuerte punto de venta aquí porque, aunque los análisis basados ​​en disco pueden ser más lentos, puede manejar con confianza grandes conjuntos de datos. Por lo tanto, espero que Stackoverflow-ers pueda ayudarme a encontrar la forma de reducir el riesgo percibido en torno al uso de Python como el principal lenguaje analítico de big-data.


Usamos Python junto con h5py, numpy / scipy y boost :: python para hacer análisis de datos. Nuestros conjuntos de datos típicos tienen tamaños de hasta cientos de GB.

Ventajas de HDF5:

  • los datos se pueden inspeccionar convenientemente usando la aplicación h5view, h5py / ipython y las herramientas de línea de comandos h5 *
  • Las API están disponibles para diferentes plataformas e idiomas
  • estructurar datos usando grupos
  • Anotación de datos utilizando atributos
  • compresión de datos incorporada sin preocupaciones
  • io en conjuntos de datos individuales es rápido

Dificultades HDF5:

  • El rendimiento se rompe, si un archivo h5 contiene demasiados conjuntos de datos / grupos (> 1000), porque atravesarlos es muy lento. Por otro lado, io es rápido para algunos grandes conjuntos de datos.
  • Las consultas de datos avanzadas (como SQL) son torpes de implementar y lentas (considere SQLite en ese caso)
  • HDF5 no es seguro para subprocesos en todos los casos: hay que asegurarse de que la biblioteca se haya compilado con las opciones correctas
  • cambiar los conjuntos de datos h5 (cambiar el tamaño, eliminar, etc.) aumenta el tamaño del archivo (en el mejor de los casos) o es imposible (en el peor de los casos) (se debe copiar todo el archivo h5 para aplanarlo de nuevo)

Este es un comentario largo, no una respuesta a su pregunta real sobre h5py. No utilizo Python para las estadísticas y tiendo a tratar con conjuntos de datos relativamente pequeños, pero podría valer la pena echarle un vistazo a la Vista de Tarea CRAN para la computación de alto rendimiento en R, especialmente la "Gran memoria y memoria insuficiente" datos "sección.

Tres razones:

  • Puede extraer el código fuente de cualquiera de esos paquetes para obtener ideas que podrían ayudarle en general
  • es posible que encuentre los nombres de los paquetes útiles para buscar equivalentes de Python; muchos usuarios de R también son usuarios de Python
  • en algunas circunstancias, podría ser conveniente simplemente vincular a R para un análisis particular usando uno de los paquetes anteriormente vinculados y luego dibujar los resultados nuevamente en Python

Nuevamente, enfatizo que esto está completamente fuera de mi alcance, y ciertamente es posible que ya sepan todo esto. Pero tal vez esto sea útil para usted o para alguien que trabaje en los mismos problemas.