本文へスキップ
BecomeCoder

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

正解率(accuracy)で測る

ブラウザで完結

導入

分類モデルの成績は、まず**正解率(accuracy)**で測ります。「全サンプルのうち、何割を正しく当てられたか」です。

説明

accuracy_score(正解, 予測) で計算できます。model.score(X, y) でも同じ値が出ます。

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

iris = load_iris()
X, y = iris.data, iris.target

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

pred = model.predict(X)
print("正解数:", (pred == y).sum(), "/", len(y))
print("正解率:", round(accuracy_score(y, pred), 3))
print("score():", round(model.score(X, y), 3))

(pred == y).sum() は「予測と正解が一致した数」を数えています。それを全体の件数で割ったものが正解率です。iris は素直なデータなので、0.97 前後の高い正解率が出ます。

ただし注意:ここでは学習に使ったデータで測っています。それだと「本当の実力」を過大評価しがちです。正しい測り方は次の第4章で学びます。

やってみよう

モデルを DecisionTreeClassifier()KNeighborsClassifier() に差し替えて、正解率を比べてみましょう。手法によってスコアが少し変わります。

演習

上のモデルの予測 pred について、accuracy_score を使って正解率を小数第3位で丸めて表示してください。

ヒント1を見る

round(accuracy_score(y, pred), 3)

実際に動かしてみよう

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

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

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