为什么 roc_curve 只返回 3 个值?

时间:2020-12-19 20:12:50

标签: python scikit-learn

我将带有标签 0 和 1 的 y_truey_pred 个形状 (999,) 传递给 FP, TP, threshold = roc_curve(y_true, y_pred, pos_label=1) 结果只有 3 个元素的 array 被返回。有什么问题?

整个代码片段

def get_roc_auc_scores(y_pred_labels, y_true_labels):
roc_auc_scores = {key: {'FP': [], 'TP': [], 'Scores': []} for key in ['Low', 'High']}
for key in roc_auc_scores.keys():
    for y_pred in y_pred_labels:
        # Get True Positive and False Positive labels
        fp, tp, thresh = roc_curve(y_true_labels[key], y_pred, pos_label=1)
        roc_auc_scores[key]['FP'].append(fp)
        roc_auc_scores[key]['TP'].append(tp)
        
        # Get AUC score
        auc_score = roc_auc_score(y_true_labels[key], y_pred)
        roc_auc_scores[key]['Scores'].append(auc_score)
return roc_auc_scores

其中 y_pred_labels 是包含 6 个 arrays 和预测的列表,y_true_labels 包含真实标签。高和低仅描述特定情况。

1 个答案:

答案 0 :(得分:0)

ROC 曲线是通过改变决策阈值来构建的:您不应将硬类预测作为 y_score 传递,而是传递概率分数或其他一些置信度量。

来自the documentation

<块引用>

y_score : array, shape = [n_samples]

目标分数,可以是正类的概率估计、置信度值或非阈值决策度量(如某些分类器上的“decision_function”返回)。

通过硬二元分类,只有三个相关阈值:一个低于 0,一个介于 0 和 1 之间,一个大于 1。