2014-03-05 37 views
0

我在閱讀this tutorial,它將管道中的PCA與邏輯迴歸相結合,然後對PCA和Logistic迴歸定義的一組參數進行交叉驗證。以下是我從示例中瞭解的內容,然後我會問我的問題。使用管道和GridSearchCV完成的培訓次數

我理解:

當GridSearchCV首先執行它具有3倍的缺省值。因此,它首先計算20個組件的PCA,然後轉換數據並讓它進入Logistic迴歸進行訓練。現在,對於Logistic迴歸C參數的每個值,它將應用3倍交叉驗證,並且看到哪些值,因此最終將進行3×3 = 9次邏輯迴歸訓練,因爲我們有3個C參數值和3倍交叉驗證每個參數值。

之後,它將執行與第二個PCA參數40是一樣的,所以其他9個培訓。然後還有9次針對PCA 64的最後一個參數的訓練。因此總共我們將有9 * 3 = 27次邏輯迴歸訓練。

我的問題:我的理解是否正確的程序?

回答

0

是的,這是完全正確的。您可以輕鬆地通過設置詳細模式網格搜索程序檢查:

>>> estimator = GridSearchCV(pipe, dict(pca__n_components=n_components, 
...          logistic__C=Cs), 
...       verbose=1) 
>>> estimator.fit(X_digits, y_digits) 
Fitting 3 folds for each of 9 candidates, totalling 27 fits 
[...snip...] 

更一般的fit調用的次數是每個參數值數的乘積,次ķ,+1如果你重新設置完整訓練集中的最佳參數(默認情況下發生)。

+0

請注意,對於當前版本的scikit-learn(0.18.1),PCA步驟在GridSearchCV交叉驗證的每個摺疊內執行,即使其輸出不隨參數C而改變... 這應該在scikit-learn的第19版中得到糾正。 –