использование перекрестной проверки для расчета специфичности

Я хочу использовать перекрестную проверку для расчета специфичности. Я нашел код для вычисления точности, на самом деле, f1-score и точности. но я не смог найти конкретики. например, код для f1-score выглядит так:

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

или для точности:

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

Благодарю.

1 ответ

Решение

Специфика - это в основном истинная отрицательная скорость, которая совпадает с истинной положительной скоростью (отзыв), но для отрицательного класса.

Если у вас есть двоичный класс, вы должны сделать следующее

  • Импортировать метрику recall_score из metrics(подробности здесь), и 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))

В любом случае вы можете сделать свой собственный бомбардир, если вам нужно что-то более сложное

make_scorer

Другие вопросы по тегам