使用scikit绘制ROC曲线仅得到3个点

TLDR: scikit的roc_curve函数在某个数据集上仅返回3个点。这是为什么?我们如何控制返回的点的数量?

我在尝试绘制ROC曲线,但总是得到一个“ROC三角形”。

lr = LogisticRegression(multi_class = 'multinomial', solver = 'newton-cg')y = data['target'].valuesX = data[['feature']].valuesmodel = lr.fit(X,y)# 获取分类器的概率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,我得到array([ 0.4822225 , -0.5177775 , -0.84595197])(总是只有3个点)。

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

我不明白的是为什么scikit的roc_curve只返回3个点。非常感谢您的帮助。

enter image description here


回答:

点的数量取决于输入中的唯一值的数量。由于输入向量只有2个唯一值,函数给出了正确的输出。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注