Mam pytanie dotyczące dwóch różnych metod z różnych bibliotek, które wydają się wykonywać tę samą pracę. Próbuję stworzyć model regresji liniowej.
Oto kod, który używam biblioteki statsmodel z 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
Ten wydruk GFT + Wiki / GT R-kwadrat 0.981434611923
a drugi to scikit learn library Metoda modelu liniowego:
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)
Ten wydruk GFT + Wiki / GT R-kwadrat: 0,8543
Moje pytanie brzmi: obie metody wypisują nasz wynik R ^ 2, ale jedna wypisuje 0,98, a druga 0,85.
Z mojego zrozumienia, OLS działa z zestawem danych szkoleniowych. Więc moje pytania
- Czy istnieje sposób, który działa z zestawem danych testowych z OLS?
- Czy wynik zestawienia danych tranzytowych ma jakieś znaczenie (w OLS nie korzystaliśmy z zestawu danych testowych)? Z mojej dotychczasowej wiedzy musimy korzystać z danych testowych.
- Jaka jest różnica między OLS a regresją liniową scikit. Którego używamy do obliczania wyniku modelu?
Dziękuję za wszelką pomoc.