scikit-learn 基本 API
fit / predict / transform という共通インターフェースと、Pipeline で前処理と学習をまとめる方法を学びます。
一貫した API#
scikit-learn の強みは、どのモデルも同じインターフェースで扱えることです。
fit(X, y):データから学習するpredict(X):予測する(分類はラベル)predict_proba(X):クラス確率を返す(AUC や LogLoss 用)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 内だけにフィットされ、リークのない正しい評価になります。
理解度チェック#
次のステップ#
最後に、基本的なモデル(線形/ロジスティック回帰・決定木)を実際に動かします。