我想使用交叉验证来计算特异性。我找到了计算准确性的代码,实际上是 f1 分数和精度。但我找不到特异性。例如,f1-score 的代码如下:
cross_val_score(SVC, X, y, scoring="f1", cv = 7)
或精确度就像:
cross_val_score(SVC, X, y, scoring="precision", cv = 7)
我想使用交叉验证来计算特异性。我找到了计算准确性的代码,实际上是 f1 分数和精度。但我找不到特异性。例如,f1-score 的代码如下:
cross_val_score(SVC, X, y, scoring="f1", cv = 7)
或精确度就像:
cross_val_score(SVC, X, y, scoring="precision", cv = 7)
特异性基本上是真阴性率,它与真阳性率(召回)相同,但对于负类
如果您有二进制类,则应执行以下操作
recall_score
从metrics
(详细信息here )导入指标,并make_scorer
运行
from sklearn.metrics import recall_score
from sklearn.metrics import make_scorer
然后你生成你的新记分器,定义你正在计算哪个类的召回(默认情况下,召回是在标签=1上计算的)
specificity = make_scorer(recall_score, pos_label=0)
标签 0 通常是二元问题中的负类。
print(cross_val_score(classifier, X_train, y_train, cv=10, specificity))
如果你想要召回(真阳性率)你可以做同样的改变类
sensitivity = make_scorer(recall_score, pos_label=1)
print(cross_val_score(classifier, X_train, y_train, cv=10, sensitivity))
无论如何,如果您需要更复杂的东西,您可以制作自定义记分器