私は本当の正のレートと誤ったポジティブレートを計算していましたが、私はsklearnから得たrocカーブをチェックしたいので、 .metrics roc_curve関数。 しかし、fpr(x軸上)とtpr(y軸上)のroc曲線は軸が入れ替わったように見えます。 私はグラデーション降下バイナリクラシファイアを2つのラベルが正と負にしています。 TPRためtensorflowコードの関連部分、FPR計算を以下に示す:pythonの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()
I次いでFPR(X軸)とTPR(y軸)とのgnuplotを使用してテキストファイルからプロット、およびIよプロットを添付しています。 これは確かに正しくありません。なぜこれはそうですか?私は間違って何をしていますか?前もって感謝します!
コードは合理的です。ポジティブとネガティブをどこかで交換したように見えます。ターミナルにtprとfprを出力して、tprが高いことを確認してください。そうであれば、グラフを描画するために問題がコード内になければなりません。また、 'arr = np.array([fpr、tpr])'にfprがあることにも注意してください。 – Stephen
@Stephenご意見ありがとうございます。はい、私はそれを端末に出力しようとしました、そして、tprはfprよりも低いです。それでグラフが説明されます。しかし、私はcnnを含む別のネットワークで同じコードを試しました。 tprはfprより大きい。だから私はこの特定の問題の何が間違っているのだろうか – abhih1