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个点。非常感谢您的帮助。
回答:
点的数量取决于输入中的唯一值的数量。由于输入向量只有2个唯一值,函数给出了正确的输出。