2012-10-24 86 views
2

我想使用GridSearchCV來確定分類器的參數,並且使用管道似乎是一個不錯的選擇。使用自定義管道進行交叉驗證scikit-learn

該應用程序將使用Bag-of-Word功能進行圖像分類,但問題是存在不同的邏輯管道,具體取決於是否使用培訓或測試示例。

對於每個訓練集,KMeans必須運行以生成將用於測試的詞彙表,但對於測試數據,將不運行KMeans進程。

我看不出如何在管道中指定這種行爲差異。

回答

3

你可能需要從KMeans類派生並重寫下面的方法來使用你的詞彙邏輯:

  • fit_transform只會在火車上的數據

  • transform會叫上調用測試數據

也許類推導並不總是最好的選擇。您還可以編寫自己的變壓器類,將調用打包爲嵌入式KMeans模型,並提供/fit_transform/transform API,Pipeline類預期可用於第一階段。

+0

啊,我認爲這可能是我錯過的那篇文章,我知道必須有一種方法來根據測試/火車執行不同的行爲。謝謝 – phil0stine

1

我們開發了PipeGraph,Pipeline的擴展以構建更復雜的圖形,如工作流。它可以在網格搜索期間更改工作流程的連接(請參閱示例庫位於https://mcasl.github.io/PipeGraph/)。特別是,可以定義兩組不同的連接,一個用於擬合,一個用於預測。