2014-06-07 28 views
5

GridSearchCV'nin best_score_ parametresinin nasıl hesaplandığını anlamaya çalışıyorum (veya başka bir deyişle, bunun anlamı nedir). documentation diyor ki: dışında kalan veriler üzerinde best_estimator aitscikit-learn GridSearchCV best_score_ nasıl hesaplanır?

Skor.

: (bu kod parçası kullanılır) farklı sonuçlar ve got -

Yani, anlıyorum bir şey haline çevirmek ve gerçek "y" s ve her kfold tahmin edilen ys ait r2_score hesaplanan çalıştı

test_pred = np.zeros(y.shape) * np.nan 
for train_ind, test_ind in kfold: 
    clf.best_estimator_.fit(X[train_ind, :], y[train_ind]) 
    test_pred[test_ind] = clf.best_estimator_.predict(X[test_ind]) 
r2_test = r2_score(y, test_pred) 

Her yerde, best_score_'ın daha anlamlı bir açıklaması için aradım ve hiçbir şey bulamadım. Açıklamak ister misiniz?

Teşekkür

+0

Genellikle katlar arası ortalamadır. Ancak, tam kodunuzu gönderebilmeniz harika olurdu, örn. simüle edilmiş veriler üzerinde. – eickenberg

cevap

9

En iyi tahmincisi ortalama çapraz doğrulama bir skor. Biraz veri yapalım ve çapraz geçerliliğin veri bölümünü düzeltelim.

>>> y = linspace(-5, 5, 200) 
>>> X = (y + np.random.randn(200)).reshape(-1, 1) 
>>> threefold = list(KFold(len(y))) 

Şimdi bunlar sabit kıvrımlar ile cross_val_score ve GridSearchCV, hem çalıştırın.

>>> cross_val_score(LinearRegression(), X, y, cv=threefold) 
array([-0.86060164, 0.2035956 , -0.81309259]) 
>>> gs = GridSearchCV(LinearRegression(), {}, cv=threefold, verbose=3).fit(X, y) 
Fitting 3 folds for each of 1 candidates, totalling 3 fits 
[CV] ................................................................ 
[CV] ...................................... , score=-0.860602 - 0.0s 
[Parallel(n_jobs=1)]: Done 1 jobs  | elapsed: 0.0s 
[CV] ................................................................ 
[CV] ....................................... , score=0.203596 - 0.0s 
[CV] ................................................................ 
[CV] ...................................... , score=-0.813093 - 0.0s 
[Parallel(n_jobs=1)]: Done 3 out of 3 | elapsed: 0.0s finished 

Not GridSearchCV çıkış score=-0.860602, score=0.203596 ve score=-0.813093; tam olarak cross_val_score tarafından döndürülen değerler.

"Ortalama" nın katmanlar üzerinden gerçekten makro ortalama olduğunu unutmayın. iid parametresi GridSearchCV, bunun yerine örneklerin üzerinde bir mikro ortalama elde etmek için kullanılabilir.

+0

"gs.best_score_" ve "cross_val_scores.mean()" için çıktı ekleyebilir misiniz? Gerçekten de – eickenberg

+2

: '>>> gs.best_score_ -0,41004566175481089 >>> cross_val_score (doğrusal regresyon() 'de X, Y, CV = üçlü) .mean() -0.41073841862279581' – Korem

+1

I cross_val_score daha fazla açıklama takdir edecektir - her kfold için r2_score mi? – Korem

İlgili konular