Методы расчета чувствительности и специфичности в Python для двоичной классификации

В контексте бинарной классификации чувствительность и специфичность — два важных показателя производительности, которые оценивают точность модели классификации. Чувствительность, также известная как доля истинных положительных результатов или отзыв, измеряет долю фактических положительных случаев, которые были правильно идентифицированы. С другой стороны, специфичность измеряет долю фактически выявленных отрицательных случаев.

Вот несколько методов Python для расчета чувствительности и специфичности:

Метод 1: использование scikit-learn

from sklearn.metrics import confusion_matrix
def calculate_sensitivity_specificity(y_true, y_pred):
    tn, fp, fn, tp = confusion_matrix(y_true, y_pred).ravel()
    sensitivity = tp / (tp + fn)
    specificity = tn / (tn + fp)
    return sensitivity, specificity
# Example usage
y_true = [1, 0, 1, 0, 1]
y_pred = [1, 0, 0, 0, 1]
sensitivity, specificity = calculate_sensitivity_specificity(y_true, y_pred)
print("Sensitivity:", sensitivity)
print("Specificity:", specificity)

Метод 2: вычисления с нуля

def calculate_sensitivity_specificity(y_true, y_pred):
    tp = sum((y_true == 1) & (y_pred == 1))
    tn = sum((y_true == 0) & (y_pred == 0))
    fp = sum((y_true == 0) & (y_pred == 1))
    fn = sum((y_true == 1) & (y_pred == 0))
    sensitivity = tp / (tp + fn)
    specificity = tn / (tn + fp)
    return sensitivity, specificity
# Example usage
y_true = [1, 0, 1, 0, 1]
y_pred = [1, 0, 0, 0, 1]
sensitivity, specificity = calculate_sensitivity_specificity(y_true, y_pred)
print("Sensitivity:", sensitivity)
print("Specificity:", specificity)

Метод 3: использование numpy

import numpy as np
def calculate_sensitivity_specificity(y_true, y_pred):
    cm = np.array([[sum((y_true == 0) & (y_pred == 0)), sum((y_true == 1) & (y_pred == 0))],
                   [sum((y_true == 0) & (y_pred == 1)), sum((y_true == 1) & (y_pred == 1))]])
    sensitivity = cm[1, 1] / (cm[1, 1] + cm[1, 0])
    specificity = cm[0, 0] / (cm[0, 0] + cm[0, 1])
    return sensitivity, specificity
# Example usage
y_true = np.array([1, 0, 1, 0, 1])
y_pred = np.array([1, 0, 0, 0, 1])
sensitivity, specificity = calculate_sensitivity_specificity(y_true, y_pred)
print("Sensitivity:", sensitivity)
print("Specificity:", specificity)

Эти методы предоставляют различные способы расчета чувствительности и специфичности в Python. Вы можете выбрать тот, который лучше всего соответствует вашим потребностям.