在scikit中绘制ROC曲线只得到3个点

2024-03-28 18:20:36 发布

您现在位置:Python中文网/ 问答频道 /正文

TLDR:scikit的roc_curve函数只返回特定数据集的3个点。 为什么会这样,我们又如何控制要赢多少分呢?

我试着画一个ROC曲线,但始终得到一个“ROC三角形”。

lr = LogisticRegression(multi_class = 'multinomial', solver = 'newton-cg')
y = data['target'].values
X = data[['feature']].values

model = lr.fit(X,y)

# get probabilities for clf
probas_ = model.predict_log_proba(X)

为了确保长度合适:

print len(y)
print len(probas_[:, 1])

两个都返回13759。

然后运行:

false_pos_rate, true_pos_rate, thresholds = roc_curve(y, probas_[:, 1])
print false_pos_rate

返回[0。0.28240129 1。]

如果我调用threasholds,我得到数组([0.4822225,-0.5177775,-0.84595197])(总是只有3个点)。

因此,我的ROC曲线看起来像三角形也就不足为奇了。

我不能理解的是,为什么scikit的{}只返回了3分。非常感谢帮助。

enter image description here


Tags: posdatamodellenratescikit曲线values
2条回答

我对另一个例子也有同样的问题。我犯的错误是输入给定阈值的结果,而不是输入参数y_score中的概率。它也给出了一个三点图。

点数取决于输入中唯一值的数目。因为输入向量只有2个唯一的值,所以函数给出正确的输出。

相关问题 更多 >