我一直在使用Precision-Recall曲线,并且很难理解如何确定阈值。
这是我的代码:
import sklearn
precision, recall, thresholds = sklearn.metrics.precision_recall_curve(y_test,
probas_pred[:,1], pos_label=1, sample_weight=None)
产生
precision = array([ 0.99971396, 1. , 1. , 1. , 1. , 1. , 1. ])
recall = array([ 1. , 0.99885551, 0.99341917, 0.96852647, 0.88898426, 0.70872675, 0. ])
thresholds = array[ 0.5, 0.6, 0.7, 0.8, 0.9, 1. ])
如果我做np.unique(probas_pred[:,1])
(随机森林,高级失衡),我会得到以下阈值:
thresholds_probas_pred = array([ 0., 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.])
我认为Precision召回曲线绘制了Probas_pred数组中所有唯一值的召回精度。在这种情况下,通过Precision-Recall曲线返回的阈值似乎忽略了小于0.5的值。有人可以解释吗?
谢谢!
原因是,在阈值= 0.5时,回忆已达到1。换句话说,对于probas_pred< 0.5,y__test都是零。进一步降低阈值,召回将保留1。