Специфичность при разных пороговых значениях (так же, как у sklearn.metrics.precision_recall_curve) - PullRequest
0 голосов
/ 31 января 2020

Я бы хотел получить специфичность точно так же, как точность и отзыв задаются как precision_recall_curve.

precisions, recalls, thresholds = sklearn.metrics.precision_recall_curve(ground_truth, predictions)

Как мне этого добиться?

1 Ответ

0 голосов
/ 31 января 2020

Итак, я посмотрел на исходный код sklearn.metrics.precision_recall_curve (https://github.com/scikit-learn/scikit-learn/blob/2e90b897768fd360ef855cb46e0b37f2b6faaf72/sklearn/metrics/_ranking.py) и изменил его в соответствии со своими потребностями.

import numpy as np
from sklearn.metrics.ranking import _binary_clf_curve

def specificity_sensitivity_curve(y_true, probas_pred):
    """
    Compute specificity-sensitivity pairs for different probability thresholds.
    For reference, see 'precision_recall_curve'
    """
    fps, tps, thresholds = _binary_clf_curve(y_true, probas_pred)
    sensitivity = tps / tps[-1]
    specificity = (fps[-1] - fps) / fps[-1]
    last_ind = tps.searchsorted(tps[-1])
    sl = slice(last_ind, None, -1)
    return np.r_[specificity[sl], 1], np.r_[sensitivity[sl], 0], thresholds[sl]
...