использование перекрестной проверки для расчета специфичности
Я хочу использовать перекрестную проверку для расчета специфичности. Я нашел код для вычисления точности, на самом деле, 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))
В любом случае вы можете сделать свой собственный бомбардир, если вам нужно что-то более сложное