True Positive Rate와 False Positive Rate를 계산하고 난 후 roc 곡선을 그려 봅니다. Sklearn에서 얻은 roc 곡선을 확인하고 싶었 기 때문에 .metrics roc_curve 함수. 그러나 fpr (x 축)과 tpr (y 축)의 roc 곡선은 축이 상호 교환 된 것처럼 보입니다. 두 개의 양수 및 음수 레이블이있는 그라디언트 디센트 바이너리 분류자를 수행하고 있습니다.파이썬에서 roc 곡선에 대한 이진 분류 자의 TPR과 FPR을 계산하십시오.
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을 이용하여 텍스트 파일 플로팅있어, 및 I : TPR에 대한 tensorflow 코드의 관련 부분은 FPR 계산은 아래 주어진 음모가 붙어 있어요. 이것은 분명 옳지 않습니다. 이게 왜 그렇게? 내가 도대체 뭘 잘못하고있는 겁니까? 미리 감사드립니다!
코드가 적당합니다. 당신이 어딘가에 긍정과 네거티브를 교환 한 것처럼 보입니다. 터미널에 tpr 및 fpr을 출력하여 tpr이 더 높은지 확인하십시오. 그렇다면 그래프를 그리기위한 문제가 코드에 있어야합니다. 또한 당신은'arr = np.array ([fpr, tpr])'에 fpr을 가지고있다. – Stephen
@Stephen 의견을 보내 주셔서 감사합니다. 예, 터미널로 출력을 시도했지만 tpr은 fpr보다 낮습니다. 그래서 그래프가 설명됩니다. 그러나 나는 cnn과 관련된 다른 네트워크에 대해 동일한 코드를 시도했지만 roc 커브는 잘 보였다! tpr은 fpr보다 큼. 그래서이 특별한 문제가 무엇이 문제인지 궁금합니다. – abhih1