56 votos

Los Pandas / Statsmodel / Scikits-aprender

  1. Son los Pandas, Statsmodels y scikits-aprender diferentes implementaciones de la máquina de aprendizaje/operaciones estadísticas, o estos son complementarios el uno al otro?

  2. Cual de estos tiene la más completa funcionalidad?

  3. Que uno es desarrollado activamente y/o compatibles?

  4. Tengo que aplicar la regresión logística. Cualquier sugerencia en cuanto a cuál de estos que debo usar?

108voto

StackQuestions Puntos 38

Me gustaría calificar y aclarar un poco el aceptado respuesta.

Los tres paquetes son complementarias entre sí, ya que cubren diferentes áreas, tienen diferentes objetivos principales, o hacer hincapié en las diferentes áreas en el aprendizaje de máquina/estadísticas.

  • pandas es principalmente un paquete para manejar y operar directamente sobre los datos.
  • scikit-learn está haciendo la máquina de aprendizaje con énfasis en el modelado predictivo, a menudo con grandes y dispersas de datos
  • statsmodels está haciendo "tradicional" de la estadística y la econometría, con mucho mayor énfasis en la estimación de los parámetros y (estadística) de la prueba.

statsmodels ha pandas como una dependencia, pandas, opcionalmente utiliza statsmodels para algunas estadísticas. statsmodels es el uso de patsy a proporcionar una fórmula similar a la interfaz de modelos como R.

Existe cierta coincidencia en los modelos entre scikit-learn y statsmodels, pero con diferentes objetivos. véase, por ejemplo, Las Dos Culturas: estadísticas contra la máquina de aprendizaje?

algo más acerca de statsmodels

statsmodels tiene el menor desarrollo de la actividad y la más larga, la liberación del ciclo de los tres. statsmodels tiene muchos colaboradores, pero, lamentablemente, todavía sólo dos "mantenedores" (yo soy uno de ellos.)

El núcleo de statsmodels es la producción de "listo": modelos lineales, robustos modelos lineales generalizados de los modelos lineales y modelos discretos han estado alrededor por varios años y son verificadas contra de Stata y R. statsmodels también tiene un análisis de series de tiempo la parte que cubre AR, ARMA y VAR (vectores autorregresivos) de regresión, 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 la estadística y la econometría enfoque en statsmodels:

Regresión lineal Simple, OLS, tiene un gran número de post-estimación de análisis http://statsmodels.sourceforge.net/devel/generated/statsmodels.regression.linear_model.OLSResults.html incluyendo las pruebas de los parámetros, los valores atípicos de las medidas y especificaciones de las pruebas http://statsmodels.sourceforge.net/devel/stats.html#residual-diagnostics-and-specification-tests

La Regresión logística se puede hacer en statsmodels como Logit modelo discreto o como una familia en el modelo lineal generalizado (GLM). http://statsmodels.sourceforge.net/devel/glm.html#module-reference

GLM incluye el habitual de las familias, discretos modelos contiene además de la Logit también Probit, multinomial y el conde de regresión.

Logit

El uso de Logit es tan simple como esto http://statsmodels.sourceforge.net/devel/examples/generated/example_discrete.html

>>> import statsmodels.api as sm
>>> x = sm.add_constant(data.exog, prepend=False)
>>> y = data.endog

>>> res1 = sm.Logit(y, x).fit()
Optimization terminated successfully.
         Current function value: 0.402801
         Iterations 7
>>> print res1.summary()
                           Logit Regression Results                           
==============================================================================
Dep. Variable:                      y   No. Observations:                   32
Model:                          Logit   Df Residuals:                       28
Method:                           MLE   Df Model:                            3
Date:                Sat, 26 Jan 2013   Pseudo R-squ.:                  0.3740
Time:                        07:34:59   Log-Likelihood:                -12.890
converged:                       True   LL-Null:                       -20.592
                                        LLR p-value:                  0.001502
==============================================================================
                 coef    std err          z      P>|z|      [95.0% Conf. Int.]
------------------------------------------------------------------------------
x1             2.8261      1.263      2.238      0.025         0.351     5.301
x2             0.0952      0.142      0.672      0.501        -0.182     0.373
x3             2.3787      1.065      2.234      0.025         0.292     4.465
const        -13.0213      4.931     -2.641      0.008       -22.687    -3.356
==============================================================================
>>> dir(res1)
...
>>> res1.predict(x.mean(0))
0.25282026208742708

43voto

user11867 Puntos 21
  1. scikits-aprender (sklearn) es la mejor opción para el aprendizaje de máquina, fuera de los tres mencionados. Mientras que los Pandas y statsmodels contienen algunos de predicción algoritmos de aprendizaje, que se ocultan/no listo para la producción todavía. A menudo, como los autores de trabajar en diferentes proyectos, las bibliotecas son de cortesía. Por ejemplo, recientemente Pandas' Dataframes fueron integrados en Statsmodels. Una relación entre sklearn y Pandas no está presente (aún).

  2. Definir la funcionalidad. Todos corren. Si te refieres a lo que es el más útil, entonces depende de su aplicación. Definitivamente, me gustaría dar a los Pandas a +1 aquí, como se ha añadido una nueva estructura de datos de Python (dataframes). Los Pandas también tiene probablemente la mejor de la api.

  3. Todos ellos son apoyó activamente, aunque yo diría que los Pandas tiene la mejor base de código. Sklearn y los Pandas son más activos que Statsmodels.

  4. La opción más clara es sklearn. Es fácil y claro de cómo realizar.

    from sklearn.linear_models import LogisticRegression as LR
    logr = LR()
    logr.fit( X, Y )
    results = logr.predict( test_data)
    

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X