2013-10-09 14 views
9

sklearn.pipelineに「オプション」のステップを設定できるのだろうかと思います。たとえば、分類問題の場合は、ExtraTreesClassifierをANDで試してみてください。PCAの変換を先に実行する必要はありません。実際には、それはGridSearchなどで最適化できるように、PCAステップのトグルを指定する追加のパラメータを持つパイプラインかもしれません。私は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) 
関連する問題