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.
źródło
exog
w szacowaniu i prognozowaniu.W modelu OLS używasz danych treningowych do dopasowania i przewidywania.
W modelu LinearRegression używasz danych treningowych do dopasowania i testowania danych w celu przewidywania, dlatego różne wyniki w wynikach R2.
Jeśli weźmiesz dane testowe w modelu OLS, powinieneś mieć takie same wyniki i niższą wartość
źródło
Napotkałem podobny problem, w którym OLS podaje różne wartości Rsquared i Skorygowane Rsquared w porównaniu z modelem regresji liniowej Sklearn.
Powód: OLS nie bierze pod uwagę, domyślnie, współczynnika przechwytywania i buduje model bez niego, a Sklearn bierze to pod uwagę przy budowaniu modelu.
Rozwiązanie: Dodaj kolumnę 1 do zestawu danych i dopasuj model do OLS, a otrzymasz prawie takie same Rsquared i Adj. Wartości Rsquared dla obu modeli.
źródło