本文へスキップ
BecomeCoder

Python AIコース · 第3章 分類 ― カテゴリを当てる · レッスン8

分類とロジスティック回帰

ブラウザで完結

導入

名前に「回帰」と付きますが、ロジスティック回帰は分類の手法です。「あるカテゴリに属する確率」を計算して、いちばんそれらしいラベルを選びます。

説明

まず iris データを読み込み、その形を確かめます。次に LogisticRegression で学習し、予測させます。

from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression

iris = load_iris()
X = iris.data       # 花の寸法4項目 × 150サンプル
y = iris.target     # 品種 0/1/2

print("データの形:", X.shape)
print("品種の名前:", list(iris.target_names))

model = LogisticRegression(max_iter=1000)
model.fit(X, y)

# 1つ目のサンプルを予測してみる
sample = [X[0]]
print("予測:", model.predict(sample)[0], "/ 正解:", y[0])
print("各品種の確率:", model.predict_proba(sample).round(3))

predict はラベル(0/1/2)を、predict_proba各品種である確率を返します。確率がいちばん高い品種が予測結果に選ばれます。「たぶんこれ」を数値で出せるのが、分類モデルの便利なところです。

max_iter=1000 は計算の反復回数を増やす指定で、学習を安定させるためのおまじないです。

やってみよう

X[0]X[100] に変えて、別のサンプルの予測と正解を見比べましょう。predict_proba の3つの確率を足すと、ほぼ 1.0 になることも確かめてください。

演習

上のモデルで、100番目のサンプル X[100] の予測ラベルを print で表示してください。

ヒント1を見る

model.predict([X[100]])[0]

実際に動かしてみよう

下のエディタにPythonを書いて「実行」を押すと、scikit-learn で本物の機械学習モデルをその場で訓練できます。scikit-learn を使う回は初回の読み込みに時間がかかります(数十秒かかることがあります)。本文の例をそのまま試したり、数値を書き換えたりして、結果の変化を確かめましょう(グラフ内の文字は英字で書きます)。

Python — ライブラリ付きで実行(Pyodide)

numpy / pandas / matplotlib が使える本物のPython(Pyodide)を読み込みます。初回のみ読み込みに少し時間がかかります(以降はブラウザにキャッシュされます)。
スクロールして表示された時点でも自動で読み込まれます。