我有一个包含50个数据点的小型数据集,两个类,每个类25个。我正在使用交叉验证进行监督分类。我已经使用整个数据集训练了一个模型,但是我也想训练一个单独的模型,其中删除了七个数据点(全部来自一个类),然后看一下它们之间的比较。这将使我在负面类中有25个,在正面类中有18个。我想使用accuracy
作为我的得分指标,因为它是该领域中使用最广泛的指标,因此我可以将自己的结果与其他人进行比较。
我想对平衡精度进行此计算:http://mvpa.blogspot.com/2015/12/balanced-accuracy-what-and-why.html用于简化后的数据集,因为它似乎与平衡组的精度最直接可比?但是sci-kit中的balanced_accuracy
得分是不同的计算(每个课程的召回率平均值)。
我已经阅读了很多有关不同指标,不平衡数据集等的文章,而且遇到了麻烦。我不相信sci-kit中有一个指标可以执行我追求的平衡精度计算吗?我是否需要使用混淆矩阵自行计算?我不知道我的编码技能是否足够好。这是比较平衡和不平衡两个数据集的最佳方法吗?我知道理想情况下应将ROC曲线用于平衡,而将精确调用曲线用于不平衡,这样实际上并没有帮助。
任何帮助都将不胜感激。
答案 0 :(得分:2)
您提到的博客文章中所谓的“平衡准确性”严格等于sklearn.metrics.balanced_accuracy_score
,这是召回得分的平均值,如您所指出。为了说服自己,我复制了博客文章中的示例:
import numpy as np
from sklearn.metrics import confusion_matrix, accuracy_score, balanced_accuracy_score
y_true = np.array([0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1])
y_predicted = np.array([0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,1,1])
print(confusion_matrix(y_true, y_predicted))
print("Accuracy score : %.3f" % accuracy_score(y_true, y_predicted))
print("Balanced accuracy score : %.3f" % balanced_accuracy_score(y_true, y_predicted))
结果:
[[9 1]
[2 7]]
Accuracy score : 0.842
Balanced accuracy score : 0.839
这些值与帖子中的示例匹配!