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 的roc_curve
只返回 3 个点。 非常感谢您的帮助。
probas_[:,1]
中的值吗?尽管它的长度为13759,但它可能只包含3个值... - pyan[print pd.Series(probas_[:,1]).unique()]
,确实只返回了两个唯一值 ([-0.84595197, -0.5177775]
)。 - sapo_cosmico