如何在Python中使用sklearn计算平衡的准确性

396 阅读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中进行Logistic回归
如何在Python中计算F1得分