gpt4 book ai didi

python - 在 python 中计算 roc 曲线的二元分类器的 TPR 和 FPR

转载 作者:太空宇宙 更新时间:2023-11-04 04:55:22 33 4
gpt4 key购买 nike

我试图计算真阳性率和假阳性率,然后手动绘制 roc 曲线,因为我想检查从 sklearn.metrics roc_curve 函数获得的 roc 曲线。但是我得到的 fpr(在 x 轴上)与 tpr(在 y 轴上)的 roc 曲线似乎轴已经互换了。我正在做一个带有正负两个标签的梯度下降二元分类器。 tpr、fpr计算的tensorflow相关部分代码如下:

prediction=tf.nn.softmax(tf.matmul(X,w)+b)
pred_pos= prediction.eval(feed_dict={X: x_pos})
pred_neg= prediction.eval(feed_dict={X: x_neg})
tpr=[]
fpr=[]
for j in range(100):
pos=0
neg=0
n=j/100.
for i in range(0,len(pred_pos)):
if(pred_pos[i,1]>=n):
pos+=1
if(pred_neg[i,1]>=n):
neg+=1
tpr.append(pos/len(x_pos))
fpr.append(neg/len(x_neg))

f= open('output.txt','wb')
arr=np.array([fpr,tpr])
arr=arr.T
np.savetxt(f,arr,fmt=['%e','%e'])
f.close()

然后我使用带有 fpr(x 轴)和 tpr(y 轴)的 gnuplot 从文本文件中绘图,并且附上绘图。 roc curve fpr vs tpr这当然是不对的。为什么会这样?我做错了什么?

最佳答案

我发现了代码的问题。而不是 if(pred_pos[i,1]>=n): 它应该是 if(pred_pos[i,0]>=n):(类似于 pred_neg ),然后它给出 fpr 和 tpr 的正确值,其中 tpr 更大。这是因为数据的标记是 [1,0] 代表正数,[0,1] 代表负数。所以决定位在预测数组的第0位。

关于python - 在 python 中计算 roc 曲线的二元分类器的 TPR 和 FPR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47179126/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com