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