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的{
我对另一个例子也有同样的问题。我犯的错误是输入给定阈值的结果,而不是输入参数
y_score
中的概率。它也给出了一个三点图。点数取决于输入中唯一值的数目。因为输入向量只有2个唯一的值,所以函数给出正确的输出。
相关问题 更多 >
编程相关推荐