本ページは scikit-learn(scikit-learn)を多角的に解説します。 上のチップは、 検索・関連語の手がかりです。
scikit-learn は 2007 年に David Cournapeau が GSoC で開始したプロジェクトで、 Python の機械学習エコシステムの 中核です。 NumPy / SciPy / pandas / matplotlib との連携が完璧で、 入門から実務まで幅広く使われます。 ドキュメントの質も非常に高く、 機械学習を学ぶならまず scikit-learnと言われるほど。
scikit-learn の哲学は 「統一 API」。 どんなアルゴリズムでも同じ 3 つのメソッドで使える:
fit(X, y):学習predict(X):予測transform(X):変換(前処理など)これにより、 ロジスティック回帰を SVM に差し替えるのに クラス名 1 行だけ変えれば済む。 アルゴリズム比較が極めて容易です。
主な機能群:
Python の機械学習標準ライブラリ
英語名 scikit-learn、 カテゴリ:ライブラリ。
fit を持つfit_transform を持つpredict を持つscikit-learn 標準ワークフロー(典型 7 ステップ):
train_test_split で分割StandardScaler で標準化(fit は訓練データのみ)RandomForestClassifier)fit(X_train, y_train) で学習predict(X_test) で予測accuracy_score 等で評価GridSearchCV でハイパラ調整最小コードで動かしてみる例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score from sklearn.preprocessing import StandardScaler from sklearn.pipeline import Pipeline # パイプラインで前処理 + モデルを連結 pipe = Pipeline([ ('scaler', StandardScaler()), ('rf', RandomForestClassifier(n_estimators=100, random_state=42)), ]) X_tr, X_te, y_tr, y_te = train_test_split(X, y, test_size=0.2, random_state=42) pipe.fit(X_tr, y_tr) print('Acc:', accuracy_score(y_te, pipe.predict(X_te))) |
fit_transform すると情報漏洩。 必ず Pipeline + train でのみ fit。accuracy だけ見ると、 多数クラス予測で「精度 95%」が出てしまう。 ROC-AUC / F1 を見る。