同じ仕事をしているように見える、異なるライブラリからの2つの異なる方法について質問があります。線形回帰モデルを作成しようとしています。
OLSでstatsmodelライブラリを使用するコードは次のとおりです。
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
この印刷はGFT + Wiki / GT R-squared 0.981434611923
2つ目は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)
これは、GFT + Wiki / GT R-squared:0.8543を出力します
私の質問は、両方の方法がR ^ 2の結果を印刷することですが、1つは0.98を印刷し、もう1つは0.85を印刷することです。
私の理解では、OLSはトレーニングデータセットで動作します。だから私の質問、
- OLSを使用してテストデータセットを操作する方法はありますか?
- トレーニングデータセットのスコアに意味はありますか(OLSではテストデータセットを使用しませんでした)?私の過去の知識から、テストデータを処理する必要があります。
- OLSとscikit線形回帰の違いは何ですか。モデルのスコアの計算に使用するのはどれですか?
助けてくれてありがとう。