GridSearchCV を使用して、なげなわモデルに最適なアルファを見つけました。
alphas = np.logspace(-5, 2, 30)
grid = GridSearchCV(estimator=Lasso(),
param_grid=dict(alpha=alphas), cv=10, scoring='r2')
grid.fit(self.X, self.Y) # entire datasets were fed here
print grid.best_params_, grid.best_score_ # score -0.0470788758558
for params, mean_score, scores in grid.grid_scores_:
print mean_score, params
最高のパラメーターは 0.0014873521072935117 で、負の r2 スコアは -0.0470788758558 でした。
次に、このアルファをモデルで直接試しました。次のコードをループで実行しました。
X_train, X_test, y_train, y_test = train_test_split(self.X, self.Y, train_size=0.7)
lasso = Lasso(alpha=0.001487)
lasso.fit(X_train, y_train)
print lasso.score(X_test, y_test)
ランダムな状態を設定していないことに注意してください。したがって、クロス検証として機能するはずです。しかし、コードを何回実行しても、ここで得たスコアは約 0.11 (0.11-0.12) です。
質問
スコア -0.0470788758558 と 0.11 が 2 つのアプローチで大きく異なるのはなぜですか?