sklearn
precision_recall_curve
関数とmatplotlib
パッケージを使用して精度と再現率の曲線を描きました。適合率-再現率曲線に精通している方は、この例のように、一部の科学コミュニティが補間された場合にのみそれを受け入れることを知っています。私の質問は、Pythonで補間を行う方法を知っている人がいるかどうかです。私はしばらくの間解決策を探していましたが、成功しませんでした! どんな助けでも大歓迎です。
解決策: @francis と @ali_m による両方の解決策は正しく、一緒に問題を解決しました。precision_recall_curve
したがって、 の関数から出力が得られると仮定するとsklearn
、グラフをプロットするために私が行ったことは次のとおりです。
precision["micro"], recall["micro"], _ = precision_recall_curve(y_test.ravel(),scores.ravel())
pr = copy.deepcopy(precision[0])
rec = copy.deepcopy(recall[0])
prInv = np.fliplr([pr])[0]
recInv = np.fliplr([rec])[0]
j = rec.shape[0]-2
while j>=0:
if prInv[j+1]>prInv[j]:
prInv[j]=prInv[j+1]
j=j-1
decreasing_max_precision = np.maximum.accumulate(prInv[::-1])[::-1]
plt.plot(recInv, decreasing_max_precision, marker= markers[mcounter], label=methodNames[countOfMethods]+': AUC={0:0.2f}'.format(average_precision[0]))
そして、これらの線を for ループに入れて各反復で各メソッドのデータを渡すと、補間された曲線がプロットされます。これは、補間されていない適合率-再現率曲線をプロットしないことに注意してください。