2014-06-07 5 views
5

मैं यह पता लगाने की कोशिश कर रहा हूं कि GridSearchCV का सबसे अच्छा_score_ पैरामीटर कैसा चल रहा है (या दूसरे शब्दों में, इसका क्या अर्थ है)। documentation का कहना है: बाहर छोड़ दिया डेटा पर best_estimator कीविज्ञान-सीखने के लिए कैसे GridSearchCV best_score_ गणना की जाती है?

स्कोर।

तो, मैं यह कुछ मैं समझता हूँ में अनुवाद और वास्तविक "y" s और प्रत्येक kfold की भविष्यवाणी की वाईएस की r2_score गणना करने की कोशिश की है - और मिल अलग परिणाम (कोड के इस टुकड़े का इस्तेमाल किया):

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) 

मैंने best_score_ के अधिक अर्थपूर्ण स्पष्टीकरण के लिए हर जगह खोज की है और कुछ भी नहीं मिला। क्या कोई समझाएगा?

धन्यवाद

+0

यह आमतौर पर फ़ोल्डरों का मतलब है। लेकिन यह बहुत अच्छा होगा अगर आप अपना पूरा कोड पोस्ट कर सकते हैं, उदा। नकली डेटा पर। – eickenberg

उत्तर

9

यह सबसे अच्छा आकलनकर्ता की संकरी पार सत्यापन स्कोर है। आइए कुछ डेटा बनाएं और डेटा के क्रॉस-सत्यापन के विभाजन को ठीक करें।

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

अब cross_val_score और GridSearchCV, इन तय परतों के साथ दोनों को चलाते हैं।

>>> 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 

नोट score=-0.860602, score=0.203596 और GridSearchCV उत्पादन में score=-0.813093; वास्तव में cross_val_score द्वारा दिए गए मान।

ध्यान दें कि "माध्य" वास्तव में गुना पर एक मैक्रो-औसत है। iid पैरामीटर GridSearchCV के लिए नमूने पर माइक्रो-औसत प्राप्त करने के लिए उपयोग किया जा सकता है।

+0

क्या आप 'gs.best_score_' और 'cross_val_scores.mean()' के लिए आउटपुट जोड़ सकते हैं? – eickenberg

+2

दरअसल: '>>> gs.best_score_ -0.41004566175481089 >>> cross_val_score (LinearRegression(), एक्स, वाई, सीवी = तीन गुना) .mean() -0.41073841862279581' – Korem

+1

मैं cross_val_score के आगे स्पष्टीकरण की सराहना करेंगे - क्या यह प्रत्येक kfold के लिए r2_score है? – Korem

संबंधित मुद्दे