2016-09-10 7 views
1

私は、GridSearchCVを使用して、ローソモデルに最適なアルファを見つけました。なぜ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 

私は負R2スコア-0.0470788758558で、0.0014873521072935117として最高のパラメータを得ました。


次に、私はこのモデルを直接モデルで試しました。私はループで次のコードを実行しました。

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それほど異なっていて?

答えて

0

私はその理由を見つけました。

CVは次のように設定する必要があります:CVは整数に等しいとき

cv = ShuffleSplit(n=len(X), n_iter=10, test_size=.3) 

、それは各反復ではない反復数でありますどのように多くのひだを意味します。

関連する問題