Tengo una pregunta sobre dos métodos diferentes de bibliotecas diferentes que parecen hacer el mismo trabajo. Estoy tratando de hacer un modelo de regresión lineal.
Aquí está el código que yo uso statsmodel biblioteca con OLS :
X_train, X_test, y_train, y_test = cross_validation.train_test_split(x, y, test_size=0.3, random_state=1)
x_train = sm.add_constant(X_train)
model = sm.OLS(y_train, x_train)
results = model.fit()
print "GFT + Wiki / GT R-squared", results.rsquared
Esta impresión GFT + Wiki / GT R-cuadrado 0,981434611923
y el segundo es scikit learn library Linear model method:
model = LinearRegression()
model.fit(X_train, y_train)
predictions = model.predict(X_test)
print 'GFT + Wiki / GT R-squared: %.4f' % model.score(X_test, y_test)
Esta impresión GFT + Wiki / GT R-cuadrado: 0.8543
Mi pregunta es que ambos métodos imprimen nuestro resultado R^2 pero uno imprime 0.98 y el otro 0.85.
Según tengo entendido, OLS funciona con un conjunto de datos de entrenamiento. Así que mis preguntas,
- ¿Existe alguna forma de trabajar con un conjunto de datos de prueba con OLS?
- ¿Tiene algún significado la puntuación del conjunto de datos de prueba (en OLS no utilizamos el conjunto de datos de prueba)? Por lo que yo sé, tenemos que trabajar con datos de prueba.
- ¿Cuál es la diferencia entre OLS y scikit linear regression. ¿Cuál utilizamos para calcular la puntuación del modelo?
Gracias por cualquier ayuda.