2013-10-09 31 views
9

我想知道我們是否可以在sklearn.pipeline中設置「可選」步驟。例如,對於分類問題,我可能希望在沒有PCA轉換的情況下嘗試帶有AND的ExtraTreesClassifier。實際上,它可能是一個具有額外參數的管道,用於指定PCA步驟的切換,以便我可以通過GridSearch等對其進行優化。我在sklearn源代碼中看不到這樣的實現,但是是否有任何工作 - 周圍?是否可以在sklearn管道中切換某個步驟?

此外,由於管線中的隨後的步驟的可能的參數值可能取決於參數在先前的步驟中(例如,ExtraTreesClassifier.max_features有效值取決於PCA.n_components),是有可能在sklearn.pipeline指定這樣的一個條件的依賴性和sklearn.grid_search

謝謝!

回答

14
  • Pipeline措施目前還不能進行選購網格中搜索,但你可以包裹PCA類到自己的OptionalPCA組件用布爾參數時,作爲一個快速的解決方法要求關閉PCA。您可能需要查看hyperopt以設置更復雜的搜索空間。我認爲它默認支持這種模式的sklearn集成很好,但我無法再找到該文檔。也許看看this talk

  • 對於依賴參數問題,GridSearchCV支持參數樹來處理這種情況as demonstrated in the documentation

+7

作爲請注意,「ExtraTreesClassifier.max_features」可以是0.0到1.0之間的浮點值,而不是整數值。這在實際功能數量變化時很有用,就像你的情況一樣。 –

+0

謝謝你們兩位有見識的答案。我認爲他們正是我所期待的。 – dolaameng

2

docs

各個步驟也可以被替換爲參數,和非最終 步驟可以將它們設置爲無被忽略:

from sklearn.linear_model import LogisticRegression 
params = dict(reduce_dim=[None, PCA(5), PCA(10)], 
       clf=[SVC(), LogisticRegression()], 
       clf__C=[0.1, 10, 100]) 
grid_search = GridSearchCV(pipe, param_grid=params) 
相關問題