3秒でわかる
Python で定番の機械学習ライブラリ。分類や回帰、前処理や評価までを fit と predict という共通の書き方で扱えます。
30秒図解
もう少し詳しく
どういうものか
scikit-learn は Python の機械学習ライブラリで、線形回帰、ロジスティック回帰、決定木、ランダムフォレスト、k 近傍法、クラスタリングなど古典的な手法を一通り備えています。NumPy と SciPy の上に作られており、表形式のデータを扱う分析で最初に選ばれます。深層学習は対象外で、そこは PyTorch や TensorFlow の領域です。
なぜ必要か
最大の価値はアルゴリズムの数ではなく、API が統一されていることです。どのモデルも fit() で学習し predict() で推論し、前処理も fit_transform() という同じ形をしています。そのためモデルを差し替える実験が 1 行の変更で済み、前処理と学習を Pipeline として 1 つの物にまとめて交差検証にかけられます。手書きだと必ず起きる、前処理を学習データにだけ適用して検証データに忘れるという事故も防げます。
具体例
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
model = make_pipeline(StandardScaler(), RandomForestClassifier(random_state=0))
model.fit(X_train, y_train)
print(classification_report(y_test, model.predict(X_test)))つまずきやすいところ
Pipeline に入れると自動的に順序が守られるrandom_state を指定しないと結果が毎回変わり、改善したのか偶然なのか判断できないOneHotEncoder などで数値化するscikit-learn、import 名は sklearn で綴りが異なる似た用語との違い
pandas はデータの整形と集計、scikit-learn は学習と評価を担当します。分析の流れとしては pandas で表を整えてから scikit-learn に渡す形になります。
覚え方
「同じ形の取っ手が全モデルに付いている工具箱」です。中身を替えても握り方は変わりません。