J'ai une question sur deux méthodes différentes de bibliothèques différentes qui semblent faire le même travail. J'essaie de faire un modèle de régression linéaire.
Voici le code que j'utilise la bibliothèque statsmodel avec 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
Cette impression GFT + Wiki / GT R-squared 0.981434611923
et la seconde est la méthode de modèle linéaire de la bibliothèque d'apprentissage 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)
Cette impression GFT + Wiki / GT R-carré: 0,8543
Donc ma question est que les deux méthodes impriment notre résultat R ^ 2 mais l'une est imprimée 0,98 et l'autre est 0,85.
D'après ma compréhension, OLS fonctionne avec un ensemble de données de formation. Alors mes questions,
- Existe-t-il un moyen de travailler avec l'ensemble de données de test avec OLS?
- Le score de l'ensemble de données de formation nous donne-t-il un sens (dans OLS, nous n'avons pas utilisé l'ensemble de données de test)? D'après mes connaissances passées, nous devons travailler avec des données de test.
- Quelle est la différence entre l'OLS et la régression linéaire scikit. Lequel nous utilisons pour calculer le score du modèle?
Merci pour toute aide.