機械学習で必須のscikit-learn関数ベスト10

こんにちは。ゆうせいです。

いよいよAIモデルを構築する段階ですね!

NumPyやPandasでデータを整えたら、次は scikit-learn(サイキット・ラーン)の出番です。

scikit-learnは、複雑な数学的アルゴリズムを、たった数行のコードで実行できるようにしてくれる魔法のツールボックスです。これを使えば、あなたも今日からデータサイエンティストの仲間入りです!

みなさんは、家具を組み立てるときに、木を切り倒すところから始めますか?それとも、あらかじめ加工されたパーツを組み立てますか?scikit-learnは、まさに「加工済みの高品質なパーツ」を提供してくれる存在です。

専門用語の解説

ここで、学習(フィット)と予測(プレディクト)という言葉を理解しましょう。

機械学習のプロセスは、よく「受験勉強」に例えられます。

  • 学習:教科書と問題集を読み込んで、パターンを覚えること。
  • 予測:覚えたパターンを使って、初めて見る試験問題の答えを導き出すこと。

scikit-learnの関数は、このプロセスを驚くほどシンプルに記述できるように設計されています。


scikit-learn関数ベスト10

初心者からプロまで、機械学習のプロジェクトで必ずと言っていいほど使用する関数とクラスをランキング形式で紹介します!

第1位:train_test_split()

機械学習の「公平性」を守るための最重要関数です。

  • 役割持っているデータを、練習用の学習データと、実力を試すためのテストデータに分割します。
  • 例え練習問題と全く同じ問題が本番のテストに出たら、本当の実力は分かりませんよね?そうならないよう、事前に「練習用」と「本番用」に切り分ける作業です。
# 1. train_test_split
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

第2位:fit()

AIに知能を授ける魔法の言葉です。

  • 役割モデルにデータを読み込ませ、データの中に隠れたルールやパターンを学ばせます。
  • 例え生徒(AIモデル)が、先生から渡された過去問(データ)を必死に解いて、解き方をマスターするステップです。
# 2. fit
from sklearn.linear_model import LogisticRegression

model = LogisticRegression(max_iter=200)
model.fit(X_train, y_train)

第3位:predict()

学習の成果を披露する瞬間です。

  • 役割学習済みのモデルに新しいデータを渡し、その結果がどうなるかを予想させます。
  • 例え勉強を終えた生徒が、初見の問題に対して「これは猫だと思います!」と回答を出す作業です。
# 3. predict
y_pred = model.predict(X_test)

第4位:StandardScaler()

データの「物差し」を揃える関数です。

  • 役割データの平均を 0 、標準偏差を 1 に変換(標準化)します。
  • 例え「100点満点のテスト」と「10点満点の小テスト」を、同じ基準で比べるために、すべて偏差値のような共通のスコアに変換するイメージです。
# 4. StandardScaler
from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

第5位:LinearRegression() / LogisticRegression()

機械学習の「基本の型」です。

  • 役割数値を予測する(回帰)や、種類を分ける(分類)ための最もシンプルなアルゴリズムを呼び出します。
  • 例え「家賃の予想」や「メールがスパムかどうかの判定」など、まずはこの基本の道具を使って分析をスタートするのが定石です。
# 5. LinearRegression
from sklearn.datasets import fetch_california_housing
from sklearn.linear_model import LinearRegression

X_reg, y_reg = fetch_california_housing(return_X_y=True)
Xr_train, Xr_test, yr_train, yr_test = train_test_split(X_reg, y_reg, test_size=0.2, random_state=42)

lin_reg = LinearRegression()
lin_reg.fit(Xr_train, yr_train)
yr_pred = lin_reg.predict(Xr_test)

第6位:RandomForestClassifier()

強力な助っ人、森の賢者です。

  • 役割たくさんの決定木(イエス・ノーで答える木)を組み合わせて、多数決で最終的な答えを出します。
  • 例え一人の専門家に聞くのではなく、100人の村人に意見を聞いて、一番多かった答えを採用するような、精度の高い手法です。
# 6. RandomForestClassifier
from sklearn.ensemble import RandomForestClassifier

rf = RandomForestClassifier(random_state=42)
rf.fit(X_train, y_train)
rf_pred = rf.predict(X_test)

第7位:GridSearchCV()

最高の「設定」を見つけ出す探検家です。

  • 役割モデルのパラメータ(設定値)をいろいろと入れ替えて、最も精度が高くなる組み合わせを自動で探し出します。
  • 例え料理の隠し味を、塩 1 g 2 g 3 g と順番に試して、一番美味しいレシピを突き止める作業です。
# 7. GridSearchCV
from sklearn.model_selection import GridSearchCV

param_grid = {"n_estimators": [50, 100], "max_depth": [None, 5, 10]}
grid = GridSearchCV(RandomForestClassifier(random_state=42), param_grid, cv=3)
grid.fit(X_train, y_train)

best_model = grid.best_estimator_

第8位:KMeans()

バラバラなものをグループ分けする関数です。

  • 役割正解が分からないデータの中から、似ているもの同士を集めてクラスタ(塊)を作ります。
  • 例え知らない言語で書かれた大量の書類を、内容が分からなくても「なんとなく形や色が似ているもの」で分ける整理術です。
# 8. KMeans
from sklearn.cluster import KMeans

kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X)
clusters = kmeans.predict(X)

第9位:accuracy_score()

AIの「点数」をつける採点官です。

  • 役割モデルが出した予測が、実際の正解とどれくらい一致していたかを計算します。
  • 例え100問のテストを受けて、何問正解したかを % で表す、非常に分かりやすい通知表です。
# 9. accuracy_score
from sklearn.metrics import accuracy_score

acc = accuracy_score(y_test, y_pred)
print(acc)

第10位:Pipeline()

一連の作業を自動化する工場です。

  • 役割データの掃除から学習まで、複数のステップを一つの流れとしてまとめます。
  • 例えベルトコンベアのように、「野菜を洗う」「切る」「煮る」という工程をセットしておき、材料を入れるだけで料理が完成するようにする仕組みです。
# 10. Pipeline
from sklearn.pipeline import Pipeline

pipeline = Pipeline([
    ("scaler", StandardScaler()),
    ("classifier", LogisticRegression(max_iter=200))
])

pipeline.fit(X_train, y_train)
pipeline_pred = pipeline.predict(X_test)

比較表

これら10個の役割を整理しました。

関数・クラス名カテゴリ使うタイミング
train_test_split前処理データの準備段階
StandardScaler前処理データの単位を揃える時
fit学習モデルを鍛える時
predict予測結果を出したい時
RandomForestモデル複雑な分類をしたい時
accuracy_score評価実力を測る時

学習の指針

scikit-learnは非常に多機能ですが、すべてを一度に覚える必要はありません。

まずは、train_test_split でデータを分け、 fit で学習させ、 predict で予測する。この3段階の黄金律をマスターすることから始めてください。

次は、実際に有名な「アヤメの花のデータセット」を使って、今回紹介した関数を順番に動かしてみませんか?自分のコードでAIが正解を導き出す快感は、何物にも代えがたいですよ。

セイ・コンサルティング・グループでは新人エンジニア研修のアシスタント講師を募集しています。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。