Я хочу построить кривую точного отзыва моей системы рекомендаций, которая возвращает мне для каждого из 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]))
Я получил следующий результат, это нормально? Кривая точного возврата