sklearn roc_curve返回值少于数据点的技术问询及测试数据示例
关于scikit-learn中roc_curve返回结果点数少于数据点的详细说明
我留意到你已经查阅过相关问题,也明确了roc_curve返回的数值数量远少于数据点数量是因为预测概率的唯一值较少导致的,结合你给出的第一次迭代y_test数据,再给你把逻辑拆解得更清楚些:
- 核心逻辑梳理:
roc_curve函数是基于预测概率的唯一阈值点来计算假阳性率(FPR)和真阳性率(TPR)的。当模型输出的预测概率存在大量重复值时,每个重复的概率值只会对应一个阈值计算节点,最终生成的FPR、TPR数组长度自然会远小于原始数据点的总数。 - 结合你的y_test数据分析:你给出的
y_test数组是[0. 1. 0. 1. 0. 1. 0. 1. 0. 0. 1. 0. 0. 1. 0. 0. 0. 1. 0. 0. 0. 1. 0. 1. 1. 1. 0. 1. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 1. 0. 1. 0. 0. 1.],如果对应的模型预测概率里有很多重复值(比如大量样本的预测概率都是0.4、0.6这类重复数值),那么roc_curve只会为每个唯一概率值计算一组FPR和TPR,最终返回的数组长度就会远小于44个数据点的数量。 - 快速验证方式:你可以用下面的代码直接验证预测概率的唯一值数量,它和
roc_curve返回的结果长度是直接对应的(可能会相差1,因为函数会额外添加(0,0)和(1,1)两个端点):import numpy as np # 假设y_score是你的模型输出的预测概率数组 unique_probs = np.unique(y_score) print(f"预测概率的唯一值数量: {len(unique_probs)}") # 假设fpr是roc_curve返回的假阳性率数组 print(f"roc_curve返回的FPR数组长度: {len(fpr)}")
如果还有具体的场景或疑问想展开,随时补充细节就好!
内容的提问来源于stack exchange,提问作者Chan Woo
相关产品推荐
相关产品推荐

