scikit-learn入門:使い方と最小フローを徹底解説

AI用語

scikit-learnは、Pythonで古典的な機械学習を扱うための標準ライブラリです。前処理から学習、評価までをシンプルなAPIで一気に進められるのが特徴です。この記事では、概念の整理と代表的な機能、そして実務に転用しやすい最小フローを紹介します。読み終えたら、そのまま手元で動かせることを目標にします。

📖この記事のポイント

  • scikit-learnの基本を理解し、最小構成で実装できるようになる
  • 前処理・学習・評価を一体化する「Pipeline」の使い方を習得
  • 欠損補完・スケーリング・分類・交差検証の流れを体験
  • 古典的機械学習(回帰・分類・クラスタリング)を短時間で理解
  • 注意点はデータリーク防止、スケーリング忘れ、Accuracy過信
  • 読了後にColabやローカルでscikit-learnをすぐ動かせる状態を目指す
  • SHIFT AIの無料セミナーならAIのプロから無料で収入に直結するAIスキル習得から仕事獲得法まで学べる!
  • 今すぐ申し込めば、超有料級の12大特典も無料でもらえる!

\ 累計受講者10万人突破 /

無料AIセミナーを見てみる
監修者プロフィール
森下浩志
日本最大級のAI情報プラットフォーム「romptn ai」編集長。著書に「0からはじめるStable Diffusion」「0からはじめるStable Diffusion モデル・拡張機能集編」など、AmazonベストセラーのAI関連書籍を多数執筆。AIにおける情報の非対称性を解消するための社内研修や出張講義も行う。

scikit-learnとは

scikit-learnは、分類・回帰・クラスタリング・次元削減といった古典的機械学習を中心に、欠損補完やスケーリングなどの前処理、モデル評価や交差検証までを一貫して扱えるPythonライブラリです。NumPyやpandasと連携し、少ないコードで実験を反復できる構造になっています。表形式データを対象とした中規模分析に最適で、学習コストと再現性のバランスに優れています。

できること(前処理/学習/評価の基本)

前処理
欠損補完はSimpleImputer、スケーリングはStandardScaler、カテゴリ変換はOneHotEncoderが基本です。複数列に異なる処理を組み合わせる場合は、ColumnTransformerでまとめると効率的です。

学習
分類ではLogisticRegressionRandomForestClassifier、回帰ではLinearRegressionRandomForestRegressorが初学者に扱いやすいです。まずはこの2ペアを比較して傾向を掴むと理解が早まります。

評価
分類ではAccuracyPrecisionRecallF1を、回帰ではMAERMSEを確認します。cross_val_scoreで交差検証を行うと、汎化性能(再現性)を把握しやすいです。

最小フロー(コピペ可・入門向け)

ここでは、学習と前処理を一体化してデータリークを防ぐ最小構成を紹介します。
サンプルCSV例:num1,num2,cat,target(targetが0/1の分類ラベル)

import pandas as pd
from sklearn.model_selection import cross_val_score
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline
from sklearn.linear_model import LogisticRegression

# データ読み込み
df = pd.read_csv("data.csv")
X = df.drop("target", axis=1)
y = df["target"]

# 列ごとの前処理
num_cols = X.select_dtypes(include=["number"]).columns
cat_cols = X.select_dtypes(exclude=["number"]).columns

preprocess = ColumnTransformer([
    ("num", StandardScaler(), num_cols),
    ("cat", OneHotEncoder(handle_unknown="ignore"), cat_cols)
])

# パイプライン(前処理→学習)
pipe = Pipeline([
    ("prep", preprocess),
    ("clf", LogisticRegression(max_iter=1000))
])

# 学習と評価
scores = cross_val_score(pipe, X, y, cv=5, scoring="f1_macro")
print("F1 (cv-mean):", scores.mean())

F1スコアの目安:0.6台なら特徴量見直し、0.7台ならモデル変更候補、0.8台以上なら実務投入を検討できます。

よくあるつまずき:原因と対処

  • 前処理を検証データにfitしてしまう
     → データリークの原因になります。必ずPipelineColumnTransformerで前処理を一体化します。
  • スケーリング抜けで精度が不安定
     → ロジスティック回帰やSVM、KMeansなどはスケーリングが前提です。StandardScalerを忘れずに。
  • Accuracyだけで判断する
     → 偏りデータでは誤解を招きます。F1Recallもあわせて確認すると理解しやすいです。

よくある質問(FAQ)

  • scikit-learnだけで深層学習はできますか?
     いいえ。scikit-learnは古典的機械学習が中心です。画像や音声などはTensorFlowやPyTorchを利用します。
  • Colabとローカル、どちらが始めやすいですか?
     まずはColabで試し、繰り返す運用や自動化が必要になったらローカル環境に移すのがスムーズです。
  • どのモデルから試せばいいですか?
     分類はLogisticRegressionRandomForestClassifier、回帰はLinearRegressionRandomForestRegressorの比較から始めると傾向を掴みやすいです。
  • train_test_splitは必要ですか?
     単発評価では使用しますが、cross_val_scoreで交差検証を行う場合は内部で自動的に分割されます。
  • 公式ドキュメントはどこで見られますか?
     scikit-learn公式サイトに、ユーザーガイドとAPIリファレンスが掲載されています。

まとめ

scikit-learnは、表形式データの入門から初実装までを最短で体験できる学習ライブラリです。前処理と学習をPipelineで束ね、交差検証で汎化性能を確認するだけで、実務にも転用できる品質に到達します。まずは最小フローを動かし、少しずつモデルや評価指標を置き換えながら理解を深めていくのがポイントです。

romptn aiが提携する「SHIFT AI」では、AIの勉強法に不安を感じている方に向けて無料オンラインセミナーを開催しています。

AIを使った副業の始め方や、収入を得るまでのロードマップについて解説しているほか、受講者の方には、ここでしか手に入らないおすすめのプロンプト集などの特典もプレゼント中です。

AIについて効率的に学ぶ方法や、業務での活用に関心がある方は、ぜひご参加ください。

\累計受講者10万人突破/