Ich habe eine Frage zu zwei verschiedenen Methoden aus verschiedenen Bibliotheken, die scheinbar den gleichen Job machen. Ich versuche, ein lineares Regressionsmodell zu erstellen.
Hier ist der Code, den ich mit der Statistikmodellbibliothek mit OLS verwende:
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
Dieser Ausdruck ist GFT + Wiki / GT R-Quadrat 0.981434611923
und die zweite ist die lineare Modellmethode:
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)
Dieser Ausdruck ist GFT + Wiki / GT R-Quadrat: 0.8543
Meine Frage ist also, dass beide Methoden unser R ^ 2-Ergebnis ausgeben, aber eine 0,98 und die andere 0,85.
Nach meinem Verständnis arbeitet OLS mit dem Trainingsdatensatz. Also meine Fragen,
- Gibt es eine Möglichkeit, mit Testdatensätzen mit OLS zu arbeiten?
- Gibt uns die Bewertung des Trainingsdatensatzes eine Bedeutung (In OLS haben wir keinen Testdatensatz verwendet)? Nach meinem bisherigen Wissen müssen wir mit Testdaten arbeiten.
- Was ist der Unterschied zwischen OLS und linearer Skikit-Regression? Welches verwenden wir zur Berechnung der Bewertung des Modells?
Danke für jede Hilfe.
quelle
exog
in die Schätzung und Prognose einbezogen werden.Im OLS-Modell verwenden Sie die Trainingsdaten, um sie anzupassen und vorherzusagen.
Mit dem LinearRegression-Modell verwenden Sie Trainingsdaten, um sie anzupassen, und testen Daten, um sie vorherzusagen. Daher ergeben sich unterschiedliche Ergebnisse für R2-Scores.
Wenn Sie Testdaten im OLS-Modell verwenden, sollten Sie dieselben Ergebnisse und einen niedrigeren Wert erzielen
quelle