Machine learning 使用交叉验证计算特异性

Machine learning 使用交叉验证计算特异性,machine-learning,scikit-learn,cross-validation,make-scorer,Machine Learning,Scikit Learn,Cross Validation,Make Scorer,我想使用交叉验证来计算特异性。我找到了计算准确度、f1分数和精度的代码。但我找不到具体的原因。 例如,f1分数的代码如下所示: cross_val_score(SVC, X, y, scoring="f1", cv = 7) 或者,对于精度,如下所示: cross_val_score(SVC, X, y, scoring="precision", cv = 7) 特异性基本上是真阴性率,与真阳性率(召回率)相同,但适用于阴性类别 如果您有一个二进制类,

我想使用交叉验证来计算特异性。我找到了计算准确度、f1分数和精度的代码。但我找不到具体的原因。 例如,f1分数的代码如下所示:

cross_val_score(SVC, X, y, scoring="f1", cv = 7)
或者,对于精度,如下所示:

cross_val_score(SVC, X, y, scoring="precision", cv = 7)

特异性基本上是真阴性率,与真阳性率(召回率)相同,但适用于阴性类别

如果您有一个二进制类,您应该执行以下操作

  • metrics
    (详细信息)和
    make\u scorer
    功能导入度量
    recall\u score

    from sklearn.metrics import recall_score
    from sklearn.metrics import make_scorer
    
  • 然后生成新的记分器,定义要计算召回率的类(默认情况下,召回率在标签=1上计算)

标签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))
无论如何,如果你需要更复杂的东西,你可以制作你的自定义记分器

,,
sensitivity = make_scorer(recall_score, pos_label=1)
print(cross_val_score(classifier, X_train, y_train, cv=10, sensitivity))