導入
分類モデルの成績は、まず**正解率(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)。