如何使用 sklearn 在 python 中计算平衡精度
平衡准确度是我们可以用来评估分类模型性能的一个指标。
计算方法如下:
平衡准确度= (灵敏度 + 特异性) / 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()函数的完整文档。