ファイナル推定器
メニューを表示するにはスワイプしてください
Pipelineは以前は前処理のために使用されていましたが、本来の目的は前処理と最終予測器を連結することです。パイプラインの最後のステップには、予測を生成する任意の推定器(通常はモデル)を配置できます。
.fit()を呼び出すと、各トランスフォーマーは.fit_transform()を実行します。
.predict()を呼び出すと、パイプラインはデータを最終推定器に渡す前に.transform()を使用します。
これは、新しいデータがトレーニングデータとまったく同じように変換される必要があるために必須です。
なぜ.transform()なのか?
新しいデータに対して.fit_transform()を使用すると、エンコーディング(例:OneHotEncoder)が変更され、列の不一致や信頼性の低い予測が発生する可能性があります。
.transform()は一貫した前処理を保証し、未知のカテゴリを無視し、同じ列順を維持します。
ワンホットエンコードされた訓練データの例:
予測対象となる新しいインスタンス:
.fit_transform() を新しいインスタンスに適用すると、OneHotEncoder が異なる順序でカラムを生成したり、新しいカラムを追加したりする可能性があります。これにより、新しいデータが訓練セットと一貫性のない変換を受け、予測が信頼できなくなります。
しかし、.transform() を使用することで、新しいデータが トレーニングデータとまったく同じように エンコードされ、トレーニング時に存在しなかったカテゴリは無視されます。
最終推定器の追加
モデルをパイプラインの最後のステップとして追加します。
pipe = make_pipeline(
ct,
SimpleImputer(strategy='most_frequent'),
StandardScaler(),
KNeighborsClassifier()
)
pipe.fit(X, y)
pipe.predict(X_new)
これにより、前処理と予測を一度の呼び出しで実行できます。
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください