На графиках точного восстановления каждая точка представляет собой пару значений точности и возврата. В вашем случае, я думаю, вам нужно вычислить эти значения для каждого изображения, а затем усреднить их.
Представьте, что у вас всего 1000 изображений и только 100 изображений относятся к лету. Если вы берете 500 ближайших изображений к какому-либо «летнему» изображению, точность в лучшем случае (когда первые изображения всегда принадлежат классу) будет:
precision(summer) = 100 / (100 + 400) = (retrieved summer images) / (retrieved summer images + other retrieved images) = 0.2
И вспомнить:
recall(summer) = 100 / (100 + 0) = (retrieved summer images) / (retrieved summer images + not retrieved summer images) = 1
Как вы можете видеть, он имеет высокий уровень отзыва, поскольку были получены все летние изображения, но с низкой точностью, поскольку имеется только 100 изображений, а 400 других изображений не относятся к классу.
Теперь, если вы возьмете первые 100 изображений вместо 500, и отзыв, и точность будут равны 1.
Если вы возьмете 50 первых изображений, то точность все равно будет равна 1, но количество возвратов упадет до 0,5.
Таким образом, изменяя количество изображений, вы можете получить точки для кривой точного возврата. Для описанного выше примера эти точки будут (0,2, 1), (1, 1), (1, 0,5).
Вы можете вычислить эти значения для каждого из 1000 изображений, используя разные пороги.