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.
la source
exog
dans l'estimation et la prévision.Dans le modèle OLS, vous utilisez les données d'entraînement pour ajuster et prévoir.
Avec le modèle LinearRegression, vous utilisez les données d'apprentissage pour ajuster et tester les données pour prédire, donc des résultats différents dans les scores R2.
Si vous preniez des données de test dans le modèle OLS, vous devriez avoir les mêmes résultats et une valeur inférieure
la source
J'ai rencontré un problème similaire où l'OLS donne des valeurs Rsquared et Rsquared ajustées différentes par rapport au modèle Sklearn LinearRegression.
Raison: OLS ne prend pas en compte, par défaut, le coefficient d'interception et y construit le modèle sans lui et Sklearn le prend en compte dans la construction du modèle.
Solution: Ajoutez une colonne de 1 à l'ensemble de données et ajustez le modèle avec OLS et vous obtiendrez presque le même Rsquared et Adj. Valeurs Rsquared pour les deux modèles.
la source