我想以precision_recall_curve
提供精确度和召回率的方式获取特异度。
from sklearn.metrics import precision_recall_curveprecisions, recalls, thresholds = precision_recall_curve( ground_truth, predictions,)
我该如何实现这一点?
回答:
因此,我查看了sklearn.metrics.precision_recall_curve
的源代码(https://github.com/scikit-learn/scikit-learn/blob/2e90b897768fd360ef855cb46e0b37f2b6faaf72/sklearn/metrics/_ranking.py),并根据我的需求进行了修改。
import numpy as npfrom sklearn.metrics.ranking import _binary_clf_curvedef specificity_sensitivity_curve(y_true, probas_pred): """ 计算不同概率阈值下的特异度-敏感度对。 作为参考,请参见'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]