我将带有标签 0 和 1 的 y_true
和 y_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
包含真实标签。高和低仅描述特定情况。
答案 0 :(得分:0)
ROC 曲线是通过改变决策阈值来构建的:您不应将硬类预测作为 y_score
传递,而是传递概率分数或其他一些置信度量。
y_score : array, shape = [n_samples]
目标分数,可以是正类的概率估计、置信度值或非阈值决策度量(如某些分类器上的“decision_function”返回)。
通过硬二元分类,只有三个相关阈值:一个低于 0,一个介于 0 和 1 之间,一个大于 1。