¿Cuál es la relación entre NumPy, SciPy, Pandas y Scikit-learn y cuándo debo usar cada uno de ellos?

Cada kit de herramientas tiene su propósito:

  • Numpy Agrega compatibilidad con Python para matrices y matrices multidimensionales grandes, junto con una gran biblioteca de funciones matemáticas de alto nivel para operar en estas matrices.
  • SciPy es una colección de algoritmos matemáticos y funciones de conveniencia basadas en la extensión Numpy de Python. Agrega un poder significativo a la sesión interactiva de Python al proporcionar al usuario comandos y clases de alto nivel para manipular y visualizar datos.
  • Pandas Biblioteca de software escrita para manipulación y análisis de datos en Python. Ofrece estructuras de datos y operaciones para manipular tablas numéricas y series de tiempo.
  • Scikit-learn es un módulo de Python para aprendizaje automático creado sobre SciPy y distribuido bajo la licencia BSD de 3 cláusulas.

Si desea estudiar el aprendizaje automático, debe conocerlos todos.

Esta imagen también será útil.

Muestra dependencias entre estos kits de herramientas.

Referencias

Cuadernos Python de ciencia de datos donnemartin / data-science-ipython-notebook

Análisis continuo Anaconda http://quasiben.github.io/PyData…

NumPy es una biblioteca para cálculos de matriz eficientes, modelada a partir de Matlab. Las matrices difieren de las listas de Python simples en la forma en que se almacenan y manejan. Los elementos de la matriz permanecen juntos en la memoria, por lo que se puede acceder rápidamente. NumPy también admite la subindexación rápida, por ejemplo, un [0,:, 2] le proporciona todos los elementos de la matriz cuyo primer índice es 0 y el tercer índice es 2.

Además, NumPy proporciona funciones matemáticas vectorizadas. Cuando, por ejemplo, llama a numpy.sin (a), la función seno se aplica a cada elemento de la matriz a. Esto se hace usando el código C compilado, por lo que funciona mucho más rápido que un Python for loop, incluso más rápido que las comprensiones de listas.

SciPy proporciona un gran menú de bibliotecas para computación científica, como integración, interpolación, procesamiento de señales, álgebra lineal, estadísticas, etc. Está construido sobre la infraestructura de Numpy.

También debería mencionar la biblioteca matplotlib para gráficos y visualización. También se basa en Numpy y está diseñado para funcionar bien con Numpy. Estas tres son bibliotecas Python bien establecidas para uso científico.

La biblioteca Pandas es buena para analizar datos tabulares. Puede usarlo para análisis de datos exploratorios, estadísticas, visualización.

Scikit-learn es una colección de algoritmos avanzados de aprendizaje automático para Python. También está construido sobre Numpy y SciPy.

Entonces, ¿cuándo usas cada uno? Si desea comprender los datos que tiene, use Pandas. Si desea utilizar estos datos para entrenar un algoritmo de aprendizaje automático, use scikit-learn. Si está haciendo algún otro cálculo científico de ingeniería, use SciPy. Si desea trazar datos, use matplotlib. Todos estos utilizan Numpy, por lo que deberá configurar sus estructuras de datos con Numpy.

La biblioteca de Python scikit-learn (también conocida como sklearn) se centra en los métodos de aprendizaje automático, la mayoría de los cuales se han desarrollado en algún momento en las últimas décadas y algunos de los cuales están razonablemente cerca de los últimos avances. Estos métodos tienden a ser poderosos, pero también potencialmente problemáticos si se aplican incorrectamente; Es probable que alguien que no entienda el método no pueda tratar adecuadamente los datos incorrectos o un resultado sin sentido. (Los datos incorrectos están en todas partes, y dada la cantidad de métodos que son estocásticos, los resultados sin sentido seguramente aparecerán en ocasiones, incluso sin datos especialmente malos).

SciPy, por otro lado, está dedicado a una clase de cálculo más antigua, los tipos de métodos que son posiblemente más fáciles de interpretar siempre que tenga una comprensión básica de ellos: regresión lineal y no lineal, integración, transformaciones de Fourier, optimización numérica, etc. Ciertamente, estos también pueden ser problemáticos si se aplican incorrectamente, pero con frecuencia puede ser más fácil solucionar los datos / métodos involucrados. Desafortunadamente, realmente no pueden lidiar con algunos de los problemas más importantes del día, como obtener más que la información más básica de una imagen visual o una señal de audio.

Fundamentalmente, están dirigidos a diferentes clases de problemas. Si puede resolver algo con los métodos en SciPy, probablemente sea una mejor idea; Los resultados serán más directos. Sin embargo, si no puede, hay una buena posibilidad de que el problema se pueda resolver utilizando métodos de scikit-learn.

Mira, cuando comienzas a diseñar un modelo de aprendizaje automático, tienes que

  1. Limpia los datos.
  2. entrenar a la modelo.
  3. Cruz validar el modelo.
  4. Listo para predecir.

En estos cuatro pasos puede que necesite

Para manipular estructuras de datos complejas, necesita PANDAS. Si necesita resolver alguna expresión matemática, puede necesitar SciPy, NumPy.

En el último para entrenar un modelo de aprendizaje automático, es posible que necesite el marco SciKit.

Creo que tendrá más confianza en esta pregunta si lee el artículo Biblioteca de aprendizaje automático de los 5 principales en Python para Data Science.

Estas son todas las herramientas en el campo de la ciencia de datos. Cuanto más bajo sea el nivel, mayor velocidad podrá alcanzar. Cuanto más alto subas, más problemas interesantes podrás resolver. Puedes ver cuál se sienta encima de otro gracias a Jake Vanderplas.

Numpy es el nivel más bajo sentado en Python. Se lee en tipos de datos fijos. Su diseño de datos está más relacionado con la eficiencia de la memoria. Si se trata de cadenas, son cadenas de longitud fija. (ajusta el tamaño de los datos para cada elemento a la longitud de cadena más larga) pero brilla cuando se trata de cálculos numéricos. Cuanto más pueda pensar en vectores, más rápido se ejecutará su código. (aprenda cómo deshacerse de las declaraciones for por razones de velocidad utilizando la transmisión Numpy)

Pandas es hojas de cálculo para Python (algo así como R). Es capaz de describir los datos por usted. Puede agrupar y pivotar tablas en datos más grandes que la mayoría de los programas de hoja de cálculo. El único límite (actualmente) es la cantidad de RAM que tiene en la máquina igual que Numpy. Sin embargo, hay un proyecto Blaze que está ayudando a superar este límite.

SciPy es el área de algoritmos para muchas disciplinas de matemáticas y ciencias. SciPy también tiene formas de lidiar con matrices dispersas.

Scikit-learn es el algoritmo de probabilidad de mayor nivel para el aprendizaje automático. Si conoce las reglas para manejar sus datos, entonces querrá algo de nivel inferior. Si desea que la computadora aprenda las reglas por usted y le brinde respuestas probabilísticas, entonces esta biblioteca es útil. Esto requiere el estudio de metaparámetros para comprender si está obteniendo una respuesta más correcta que no.