Pregunta

Estoy trabajando en un modelo de regresión logística y tengo problemas para entender cómo llevar el ajuste del modelo de mi conjunto de entrenamiento a mi conjunto de prueba.Lo siento, soy nuevo en Python y MUY nuevo en statsmodels.

import pandas as pd
import statsmodels.api as sm
from sklearn import cross_validation

independent_vars = phy_train.columns[3:]
X_train, X_test, y_train, y_test = cross_validation.train_test_split(phy_train[independent_vars], phy_train['target'], test_size=0.3, random_state=0)
X_train = pd.DataFrame(X_train)
X_train.columns = independent_vars
X_test = pd.DataFrame(X_test)
X_test.columns = independent_vars
y_train = pd.DataFrame(y_train)
y_train.columns = ['target']
y_test = pd.DataFrame(y_test)
y_test.columns = ['target']
logit = sm.Logit(y_train,X_train[subset],missing='drop')
result = logit.fit()
print result.summary()

y_pred = logit.predict(X_test[subset])

Desde la última línea, aparece este error:

y_pred = logit.predict (x_test [subconjunto]) traza (la llamada más reciente la última):Archivo "", línea 1, en el archivo "C: Users Emachine Winpython-64bit-2.7.5.3 Python-2.7.5.amd64 lib Site-Packages Statsmodels Discrete discret_model.py", línea 378 , en predecir return self.cdf (np.dot (exog, params)) valueError:las matrices no están alineadas

Mi conjunto de datos de entrenamiento y prueba tiene la misma cantidad de variables, por lo que estoy seguro de que no entiendo bien lo que realmente está haciendo logit.predict().

¿Fue útil?

Solución

Hay dos métodos de predicción.

logit en tu ejemplo es el instancia de modelo.La instancia del modelo no conoce los resultados de la estimación.La predicción del modelo tiene una firma diferente porque también necesita los parámetros. logit.predict(params, exog).Esto es principalmente interesante para uso interno.

Lo que quieres es el método de predicción del instancia de resultados.en tu ejemplo

y_pred = result.predict(X_test[subset])

debería dar los resultados correctos.Utiliza los parámetros estimados en la predicción con sus nuevos datos de prueba de variables explicativas, X_test.

Vocación model.fit() Devuelve una instancia de una clase de resultados que proporciona acceso a estadísticas y análisis adicionales posteriores a la estimación, y a predicciones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top