在scikit中查询平衡精度计算和评分指标,以比较平衡和不平衡数据集

2024-09-28 03:12:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个50个数据点的小数据集,两个类,每个类25个。我正在使用交叉验证进行监督分类。我已经使用整个数据集训练了一个模型,但是我还想训练一个单独的模型,从一个类中删除7个数据点,看看这是如何比较的。这将使我在负班有25人,在正班有18人。我想使用accuracy作为我的评分标准,因为它在我的领域中使用最广泛,所以我可以将我的结果与其他人进行比较。你知道吗

我想使用这个平衡精度的计算:http://mvpa.blogspot.com/2015/12/balanced-accuracy-what-and-why.html对于我的简化数据集,因为它似乎最直接地与平衡集的精度相比较?但是sci-kit中的balanced_accuracy得分是一个不同的计算方法(每个类的平均召回率)。你知道吗

我读过很多关于不同指标、不平衡数据集等的书,我碰到了一堵墙。我不相信在sci工具包中有一个度量来执行我所追求的平衡精度计算?我需要用混淆矩阵自己计算吗?我不知道我的编码技术是否足够好。这是比较平衡和不平衡两个数据集的最佳方法吗?我知道理想情况下,ROC曲线应该用于平衡,而精确召回曲线应该用于不平衡,所以这并没有真正的帮助。你知道吗

非常感谢您的帮助。你知道吗


Tags: 数据模型comhttp分类精度曲线交叉
1条回答
网友
1楼 · 发布于 2024-09-28 03:12:52

你提到的博客文章中所谓的“平衡准确度”严格等同于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

这些值与文章中的示例匹配!你知道吗

相关问题 更多 >

    热门问题