Tengo una pregunta sobre dos métodos diferentes de diferentes bibliotecas que parece estar haciendo el mismo trabajo. Estoy tratando de hacer un modelo de regresión lineal.
Aquí está el código que uso la biblioteca de estadísticas 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-squared 0.981434611923
y el segundo es el método de modelo lineal de la biblioteca de aprendizaje scikit:
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
Entonces, mi pregunta es que ambos métodos imprimen nuestro resultado R ^ 2, pero uno imprime 0.98 y el otro es 0.85.
Según tengo entendido, OLS trabaja con el conjunto de datos de entrenamiento. Entonces mis preguntas
- ¿Hay alguna manera que funcione con el conjunto de datos de prueba con OLS?
- ¿El puntaje del conjunto de datos de rastreo nos da algún significado (en OLS no utilizamos el conjunto de datos de prueba)? Según mi conocimiento anterior, tenemos que trabajar con datos de prueba.
- ¿Cuál es la diferencia entre OLS y la regresión lineal de scikit? ¿Cuál usamos para calcular la puntuación del modelo?
Gracias por cualquier ayuda.