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 スコアと精度: どちらを使用するべきですか?