用語比較
Pipelineとmake_pipelineの違い(Python3データ分析)
違いは、工程の名前を自分で付けるか、自動で付くかです。Pipelineは名前を付けて渡し、make_pipelineは推定器だけを渡します。
Python3データ分析試験の公式の出題範囲には、scikit-learnの節(8問)があります。出題の形式は、受験前に公式の案内で確かめてください。
この記事の目次
この記事の根拠と出典
各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。
Pipelineとmake_pipelineの要点
Pipeline
(名前, 推定器) のタプルのリストを渡す。工程の名前を自分で決められる。
make_pipeline
推定器を並べて渡す。Pipelineを作る簡略な書き方で、名前は型の小文字になる。
違いを表で確認
| 比較軸 | Pipeline | make_pipeline |
|---|---|---|
| 渡すもの | (名前, 推定器) のタプルのリスト | 推定器そのもの(名前は渡せない) |
| 工程の名前 | 自分で付ける(例: 'scaler'・'svc') | 型の小文字が自動で付く(例: 'standardscaler'・'svc') |
| 作られるもの | Pipelineオブジェクト | 同じくPipelineオブジェクト |
| パラメータの指定で使う名前 | 付けた名前。例: svc__C | 自動で付いた名前。例: svc__C(SVCの場合)、standardscaler__with_mean |
| 向く場面 | 名前を読みやすくしたい、名前を固定したいとき | 名前にこだわらず、短く書きたいとき |
Python3エンジニア認定データ分析試験の学習に使う書籍(Amazon)
PRどこで迷っているかを切り分ける
名前を自分で決めたい人
Pipelineを使います。'scaler'・'clf'のように、工程の役割が分かる名前を付けられます。
短く書きたい人
make_pipelineを使います。推定器を並べるだけで、名前は自動で付きます。
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
工程名を使うか考える
パラメータ調整や、工程の取り出しで工程名を使うかを考えます。
- 2
名前を決めたいか判断する
名前を決めたいならPipeline、自動でよいならmake_pipelineにします。
- 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の工程名が型の小文字になると説明できる
- 途中の工程と最後の工程に必要なメソッドを言える
関連ページで確認する
同じ資格で次に知りたいこと
- ColumnTransformerのremainder='drop'と'passthrough'の違い(Python3データ分析)
ColumnTransformerのremainderは既定で'drop'(指定しなかった列を捨てる)、'passthrough'にすると変換せず出力の右側に残します。3列のデータで出力の列数を比べ、scikit-learn公式文書で照合してまとめます。
- plt.figure()とplt.subplots()の違い|Axesの有無(Python3データ分析)
plt.figure()はAxesのない空のFigure、plt.subplots()はAxes付きのFigureを作ります。plt.subplots(2, 2)の格子、subplot_mosaicとの違い、戻り値の受け取り方を、Matplotlib公式のQuick start guideで照合してまとめます。
- NumPyのaxis=0とaxis=1の違い|列ごとの集計と行ごとの集計(Python3データ分析試験)
NumPyのaxis=0は列ごと、axis=1は行ごとに計算します。3行4列の配列でsum・min・cumsumの結果を並べ、pandasのmean(axis=1)との対応、間違えやすい点と確認問題をまとめます。
よくある質問
QPipelineとは何ですか?
scikit-learn公式文書では、データ変換器の列と、最後に置く任意の予測器をつなぐものと説明されています。途中の工程は変換器で、最後の推定器はfitだけを持てばよいとされています。
Qmake_pipelineとは何ですか?
公式文書では、Pipelineのコンストラクタの簡略な書き方で、推定器に名前を付けることを求めず許さない、と説明されています。名前は型の小文字になります。
Qパイプラインのパラメータはどう指定しますか?
公式文書のPipelineの例では、set_params(svc__C=10) のように、工程名と二重のアンダースコアでパラメータを指定します。
QPython3データ分析試験で問われますか?
公式の出題範囲にscikit-learnの節(8問)があります。Pipelineの出題の形式は、受験前に公式の案内で確認してください。
次に見る比較
- G検定・DS検定・統計検定2級で重なる用語10語の比較
同じ名前の用語の定義と収録章を、資格ごとに並べます。
- ベイズの定理と条件付き確率の違い(統計検定2級の式と計算例)
求める確率の向きの違いと、陽性になる確率の計算例を確かめます。
- 紛らわしい用語ペア早見表
混同しやすい用語の違いと判定の手掛かりを、資格別の一覧で確かめます。
執筆: AI資格ドリル編集部(運営者情報を見る)
