为排名列表绘制精度-召回曲线

时间:2019-04-24 11:53:44

标签: python-3.x matplotlib precision-recall

我想画出我的推荐系统的精确召回曲线,它以分类列表的形式向100个用户中的每个用户返回。 我以数组的形式计算每个用户的召回率和精度,然后尝试以这种方式绘制曲线:

precision_CB = list(CB_detailed_results_df_Precision['Precision@5'])
recall=np.linspace(0.0,1.0,num=42)
i=recall.shape[0]-2
# interpolation...
while i>=0 :
if precision_CB[i+1]>precision_CB[i] :
    precision_CB[i]=precision_CB[i+1]
    i=i-1
# plotting...
fig, ax = plt.subplots()
plt.xlabel('Recall')
plt.ylabel('Precision')
plt.xlim([0, 1])
plt.ylim([0, 1])
for i in range(recall.shape[0]-1):
   ax.plot((recall[i],recall[i]),(precision_CB[i],precision_CB[i+1])) 
   ax.plot((recall[i],recall[i+1]),(precision_CB[i+1],precision_CB[i+1]))

我得到以下结果,正常吗? precision-recall curve

0 个答案:

没有答案