Sklearn を使用して python でバランスの取れた精度を計算する方法


バランスの取れた精度は分類モデルのパフォーマンスを評価するために使用できる指標です。

次のように計算されます。

バランスの取れた精度= (感度 + 特異度) / 2

金:

  • 感度: 「真陽性率」 – モデルが検出できる陽性症例の割合。
  • 特異度: 「真陰性率」 – モデルが検出できる陰性ケースの割合。

このメトリクスは、2 つのクラスのバランスが崩れている場合、つまり、一方のクラスが他方のクラスよりも多く表示される場合に特に役立ちます。

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

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

モデルのバランスの取れた精度を計算するには、まず感度と特異度を計算します。

  • 感度: 「真陽性率」 = 15 / (15 + 5) = 0.75
  • 特異度: 「真陰性率」 = 375 / (375 + 5) = 0.9868

次に、バランスの取れた精度を次のように計算できます。

  • バランスの取れた精度 = (感度 + 特異度) / 2
  • バランスの取れた精度 = (0.75 + 9868) / 2
  • バランスの取れた精度 = 0.8684

モデルの平衡精度は0.8684であることがわかります。

次の例は、Python のsklearnライブラリのBalanced_accuracy_score()関数を使用して、この特定のシナリオのバランスの取れた精度を計算する方法を示しています。

例: Python でバランスのとれた精度を計算する

次のコードは、予測クラスの配列と実際のクラスの配列を定義し、Python でモデルのバランスの取れた精度を計算する方法を示しています。

 import numpy as np
from sklearn. metrics import balanced_accuracy_score

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

#define array of predicted classes
pred = np. repeat ([1, 0, 1, 0], repeats=[15, 5, 5, 375])

#calculate balanced accuracy score
balanced_accuracy_score(actual, pred)

0.868421052631579

平衡精度は0.8684です。これは、以前に手動で計算した値と一致します。

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

追加リソース

バランスの取れた精度の概要
Python でロジスティック回帰を実行する方法
Python で F1 スコアを計算する方法

コメントを追加する

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