2016-11-20 16 views
5

私はsklearnのWebページからこれを得た:scikitのパイプラインとmake_pipelineの違いは何ですか?

a)のパイプライン:最終推定と変換のパイプライン

B)Make_pipeline:与えられた推定からパイプラインを構築します。これは、Pipelineコンストラクタの略語です。

しかし、私はそれぞれを使用する必要があるときはまだ理解していません。誰か私に例を与えることができますか?

答えて

14

唯一の違いは、make_pipelineがステップの名前を自動的に生成することです。

ステップ名が必要です。モデル選択ユーティリティ(たとえばGridSearchCV)でパイプラインを使用する場合Pipelineで、だから、

pipe = make_pipeline(CountVectorizer(), LogisticRegression())  
param_grid = [{'logisticregression__C': [1, 10, 100, 1000]} 
gs = GridSearchCV(pipe, param_grid) 
gs.fit(X, y) 

pipe = Pipeline([('vec', CountVectorizer()), ('clf', LogisticRegression()]) 
param_grid = [{'clf__C': [1, 10, 100, 1000]} 
gs = GridSearchCV(pipe, param_grid) 
gs.fit(X, y) 

はmake_pipelineと比較:グリッド検索を使用すると、パイプラインの様々なステップのパラメータを指定する必要が

  • 名が明示されている、あなたをあなたがそれらを必要とする場合、それらを把握する必要はありません。
  • ステップで使用される見積もり/変圧器を変更した場合、名前は変更されません。 LogisticRegression()をLinearSVC()に置き換えた場合でも、clf__Cを使用できます。

make_pipeline

  • 短く、間違いなく、より読みやすい表記。
  • 名前は簡単なルール(見積もりの​​小文字名)を使用して自動生成されます。

これらはいつでも使用できます:)私は、より速い実験ではmake_pipelineを、より安定したコードではPipelineを使用することをお勧めします。経験則:IPythonノートブック - > make_pipeline;より大きなプロジェクトのPythonモジュール - >パイプライン。しかし、短いスクリプトやノートブックのモジュールやパイプラインでmake_pipelineを使うのは確かに大したことではありません。