我想画出我的推荐系统的精确召回曲线,它以分类列表的形式向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