AI資格ドリル
資格を選ぶ

用語比較

Pipelineとmake_pipelineの違い(Python3データ分析)

違いは、工程の名前を自分で付けるか、自動で付くかです。Pipelineは名前を付けて渡し、make_pipelineは推定器だけを渡します。

Python3データ分析試験の公式の出題範囲には、scikit-learnの節(8問)があります。出題の形式は、受験前に公式の案内で確かめてください。

この記事の根拠と出典

各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。

Pipelineとmake_pipelineの要点

Pipeline

(名前, 推定器) のタプルのリストを渡す。工程の名前を自分で決められる。

make_pipeline

推定器を並べて渡す。Pipelineを作る簡略な書き方で、名前は型の小文字になる。

違いを表で確認

比較軸Pipelinemake_pipeline
渡すもの(名前, 推定器) のタプルのリスト推定器そのもの(名前は渡せない)
工程の名前自分で付ける(例: 'scaler'・'svc')型の小文字が自動で付く(例: 'standardscaler'・'svc')
作られるものPipelineオブジェクト同じくPipelineオブジェクト
パラメータの指定で使う名前付けた名前。例: svc__C自動で付いた名前。例: svc__C(SVCの場合)、standardscaler__with_mean
向く場面名前を読みやすくしたい、名前を固定したいとき名前にこだわらず、短く書きたいとき

Python3エンジニア認定データ分析試験の学習に使う書籍(Amazon)

PR

ほかの資格を含む参考書・問題集の一覧を見る

どこで迷っているかを切り分ける

01

名前を自分で決めたい人

Pipelineを使います。'scaler'・'clf'のように、工程の役割が分かる名前を付けられます。

02

短く書きたい人

make_pipelineを使います。推定器を並べるだけで、名前は自動で付きます。

03

GridSearchCVでパラメータを指定する人

どちらで作っても、工程名と二重のアンダースコアでパラメータを指定します。make_pipelineでは、名前が型の小文字になる点に注意します。

具体例で使い分ける

例 1

StandardScalerとSVCをつなぐ

標準化してからSVCで分類する2工程のパイプラインを、2通りで書く場面です。

  • Pipeline([('scaler', StandardScaler()), ('svc', SVC())]) と書くと、工程名は 'scaler' と 'svc' です。
  • make_pipeline(StandardScaler(), SVC()) と書くと、工程名は 'standardscaler' と 'svc' になります。

結論: 作られるのはどちらもPipeline。違うのは工程名で、標準化の工程名が 'scaler' か 'standardscaler' かになります。

例 2

公式文書のmake_pipelineの例

make_pipeline(StandardScaler(), GaussianNB(priors=None)) を表示する場面です。

  • 公式文書の表示は Pipeline(steps=[('standardscaler', StandardScaler()), ('gaussiannb', GaussianNB())]) です。
  • 型の名前が小文字になって、それぞれ工程名になっています。

結論: make_pipelineの工程名は、型の名前の小文字。自分で名前は付けられない。

問題文から答えを選ぶ手順

  1. 1

    工程名を使うか考える

    パラメータ調整や、工程の取り出しで工程名を使うかを考えます。

  2. 2

    名前を決めたいか判断する

    名前を決めたいならPipeline、自動でよいならmake_pipelineにします。

  3. 3

    工程名を確かめる

    make_pipelineで作った場合は、型の小文字になった名前をパラメータの指定に使います。

試験での見分け方

  • 1Pipelineは(名前, 推定器)のタプルのリストを渡す。
  • 2make_pipelineはPipelineを作る簡略な書き方で、名前は付けられない。
  • 3make_pipelineの工程名は、型の名前の小文字。
  • 4最後の工程以外は、fitとtransformを持つ変換器でなければならない。
  • 5どちらで作ったパイプラインも、工程名と__でパラメータを指定できる。

誤答しやすい選択肢

make_pipelineにも名前を渡せると考える

修正: 公式文書では、make_pipelineは推定器に名前を付けることを求めず、許しません。名前を付けたいときはPipelineを使います。

make_pipelineの工程名が 'scaler' のような自分の名前になると考える

修正: 工程名は型の小文字で自動に付きます。StandardScalerなら 'standardscaler' です。

最後の工程にも変換器が必要だと考える

修正: 最後の工程はfitさえあればよく、最後以外の工程がfitとtransformを持つ必要があります。

確認問題

Q1make_pipeline(StandardScaler(), SVC()) の標準化の工程名は何になるか?

答え: 'standardscaler'

make_pipelineは、型の名前の小文字を工程名として自動で付けます。

Q2工程の名前を自分で決めたいとき、Pipelineとmake_pipelineのどちらを使うか?

答え: Pipeline

make_pipelineは名前を渡せません。Pipelineなら(名前, 推定器)のタプルで名前を決められます。

Q3Pipelineの最後以外の工程が満たす必要のある条件は何か?

答え: fitとtransformを持つ変換器であること

公式文書では、途中の工程は変換器で、最後の推定器はfitだけあればよいと説明されています。

到達チェック

  • Pipelineとmake_pipelineの渡し方の違いを説明できる
  • make_pipelineの工程名が型の小文字になると説明できる
  • 途中の工程と最後の工程に必要なメソッドを言える

同じ資格で次に知りたいこと

よくある質問

QPipelineとは何ですか?

A

scikit-learn公式文書では、データ変換器の列と、最後に置く任意の予測器をつなぐものと説明されています。途中の工程は変換器で、最後の推定器はfitだけを持てばよいとされています。

Qmake_pipelineとは何ですか?

A

公式文書では、Pipelineのコンストラクタの簡略な書き方で、推定器に名前を付けることを求めず許さない、と説明されています。名前は型の小文字になります。

Qパイプラインのパラメータはどう指定しますか?

A

公式文書のPipelineの例では、set_params(svc__C=10) のように、工程名と二重のアンダースコアでパラメータを指定します。

QPython3データ分析試験で問われますか?

A

公式の出題範囲にscikit-learnの節(8問)があります。Pipelineの出題の形式は、受験前に公式の案内で確認してください。

次に見る比較

執筆: AI資格ドリル編集部(運営者情報を見る)