Kaggle Tutorial

scikit-learn 基本 API

fit / predict / transform という共通インターフェースと、Pipeline で前処理と学習をまとめる方法を学びます。

一貫した API#

scikit-learn の強みは、どのモデルも同じインターフェースで扱えることです。

  • fit(X, y):データから学習する
  • predict(X):予測する(分類はラベル)
  • predict_proba(X):クラス確率を返す(AUCLogLoss 用)
  • transform(X):前処理(変換)を適用する。fit_transform で学習と変換を同時に
from sklearn.linear_model import LogisticRegression

model = LogisticRegression(max_iter=1000)
model.fit(X_train, y_train)          # 学習
pred = model.predict(X_valid)        # ラベル予測
proba = model.predict_proba(X_valid)[:, 1]  # 陽性クラスの確率

Pipeline で前処理と学習をまとめる#

前処理(標準化や欠損補完)とモデルを Pipeline にまとめると、 前処理が訓練データだけにフィットされ、検証・テストへ正しく適用されます。 これは交差検証内でのデータリークを防ぐ最も実用的な方法です。

from sklearn.pipeline import Pipeline
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression

pipe = Pipeline([
    ("imputer", SimpleImputer(strategy="median")),
    ("scaler", StandardScaler()),
    ("model", LogisticRegression(max_iter=1000)),
])

pipe.fit(X_train, y_train)
pipe.score(X_valid, y_valid)

ヒント

cross_val_score(pipe, X, y, cv=...) のように Pipeline ごと交差検証に渡すと、 各 fold で前処理が fold 内だけにフィットされ、リークのない正しい評価になります。

理解度チェック#

Quiz標準化などの前処理を Pipeline にまとめて交差検証に渡す主な利点は?

次のステップ#

最後に、基本的なモデル(線形/ロジスティック回帰・決定木)を実際に動かします。