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.