Scikit-learn (sklearn) es la mejor opción para el aprendizaje automático, de los tres enumerados. Si bien los modelos Pandas y Stats contienen algunos algoritmos de aprendizaje predictivo, todavía están ocultos / no están listos para la producción. A menudo, como los autores trabajarán en diferentes proyectos, las bibliotecas son complementarias. Por ejemplo, recientemente los marcos de datos de Pandas se integraron en los modelos de estadísticas. Una relación entre sklearn y Pandas no está presente (todavía).
Definir funcionalidad. Todos corren. Si te refieres a lo que es más útil, entonces depende de tu aplicación. Definitivamente le daría a Pandas un +1 aquí, ya que ha agregado una nueva estructura de datos a Python (marcos de datos). Pandas probablemente también tiene la mejor API.
Todos tienen soporte activo, aunque yo diría que Pandas tiene la mejor base de código. Sklearn y Pandas son más activos que los Statsmodels.
La elección clara es Sklearn. Es fácil y claro cómo realizarlo.
from sklearn.linear_models import LogisticRegression as LR
logr = LR()
logr.fit( X, Y )
results = logr.predict( test_data)
linear_model
(singular) y nolinear_models
.Me gustaría calificar y aclarar un poco la respuesta aceptada.
Los tres paquetes son complementarios entre sí, ya que cubren diferentes áreas, tienen diferentes objetivos principales o enfatizan diferentes áreas en aprendizaje automático / estadísticas.
statsmodels tiene pandas como una dependencia, pandas opcionalmente usa statsmodels para algunas estadísticas. statsmodels está utilizando
patsy
para proporcionar una interfaz de fórmula similar a los modelos como R.Hay cierta superposición en los modelos entre scikit-learn y statsmodels, pero con objetivos diferentes. ver por ejemplo Las dos culturas: ¿estadísticas vs. aprendizaje automático?
algo más sobre modelos de estadísticas
statsmodels tiene la actividad de desarrollo más baja y el ciclo de lanzamiento más largo de los tres. statsmodels tiene muchos contribuyentes pero desafortunadamente solo dos "mantenedores" (yo soy uno de ellos).
El núcleo de statsmodels está "listo para producción": modelos lineales, modelos lineales robustos, modelos lineales generalizados y modelos discretos han existido durante varios años y se verifican contra Stata y R. statsmodels también tiene una parte de análisis de series de tiempo que cubre AR, ARMA y Regresión VAR (vector autorregresivo), que no están disponibles en ningún otro paquete de Python.
Algunos ejemplos para mostrar algunas diferencias específicas entre el enfoque de aprendizaje automático en scikit-learn y el enfoque de estadísticas y econometría en modelos de estadísticas:
La regresión lineal simple
OLS
tiene una gran cantidad de análisis posteriores a la estimación http://statsmodels.sourceforge.net/devel/generated/statsmodels.regression.linear_model.OLSResults.html que incluye pruebas de parámetros, medidas atípicas y pruebas de especificación http: / /statsmodels.sourceforge.net/devel/stats.html#residual-diagnostics-and-specification-testsLa regresión logística se puede realizar en modelos de estadísticas, ya sea como
Logit
modelo discreto o como familia en modelo lineal generalizado (GLM
). http://statsmodels.sourceforge.net/devel/glm.html#module-referenceGLM
incluye las familias habituales, modelos discretos contiene ademásLogit
tambiénProbit
, multinomial y contar regresión.Logit
El uso
Logit
es tan simple como este http://statsmodels.sourceforge.net/devel/examples/generated/example_discrete.htmlfuente