5
TLDR:scikit的roc_curve
函数仅返回某个数据集的3个点。 为什么会这样呢,我们如何控制要返回的点数?在scikit中绘制ROC曲线只会得到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)
只是为了确保长度都OK:
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的roc_curve
只返回3分。非常感谢。
您是否检查过'probas _ [:, 1]'中的值?虽然它的长度为13759,但它可能只包含3个值... – pyan
感谢您的帮助,我做了'[print pd.Series(probas _ [:,1])。unique()]',实际上只有2独一无二('[-0.84595197 -0.5177775]')被退回 –
很高兴它有帮助。如果你喜欢,请接受答案。 – pyan