Python で f1 スコアを計算する方法 (例を含む)


機械学習で分類モデルを使用する場合、モデルの品質を評価するために使用する一般的な指標はF1 スコアです。

このメトリクスは次のように計算されます。

F1 スコア= 2 * (適合率 * 再現率) / (適合率 + 再現率)

金:

  • 精度: 陽性予測の合計に対する正しい陽性予測
  • リマインダー: 実際の陽性合計に対する陽性予測の修正

たとえば、ロジスティック回帰モデルを使用して、400 人の異なる大学バスケットボール選手が NBA にドラフトされるかどうかを予測するとします。

次の混同行列は、モデルによって行われた予測を要約したものです。

モデルの F1 スコアを計算する方法は次のとおりです。

精度 = 真陽性 / (真陽性 + 偽陽性) = 120/ (120+70) = 0.63157

リコール = 真陽性 / (真陽性 + 偽陰性) = 120 / (120+40) = 0.75

F1 スコア = 2 * (.63157 * .75) / (.63157 + .75) = 。 6857

次の例は、Python でこの正確なモデルの F1 スコアを計算する方法を示しています。

例: Python での F1 スコアの計算

次のコードは、Python のsklearnパッケージのf1_score()関数を使用して、予測値と実際の値の指定された配列の F1 スコアを計算する方法を示しています。

 import numpy as np
from sklearn. metrics import f1_score

#define array of actual classes
actual = np. repeat ([1, 0], repeats=[160, 240])

#define array of predicted classes
pred = np. repeat ([1, 0, 1, 0], repeats=[120, 40, 70, 170])

#calculate F1 score
f1_score(actual, pred)

0.6857142857142857

F1 スコアは0.6857であることがわかります。これは、以前に手動で計算した値と一致します。

: f1_score()関数の完全なドキュメントはここで見つけることができます。

F1スコア使用上の注意

F1 スコアを使用して複数のモデルを比較する場合、F1 スコアが最も高いモデルは、観測値をクラスに最もよく分類できるモデルを表します。

たとえば、別のロジスティック回帰モデルをデータに適合させ、そのモデルの F1 スコアが 0.75 である場合、そのモデルの方が F1 スコアが高いため、より優れていると見なされます。

追加リソース

Python でロジスティック回帰を実行する方法
Python で混同行列を作成する方法
Python でバランスの取れた精度を計算する方法
F1 スコアと精度: どちらを使用するべきですか?

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です