Как определить максимальное и минимальное число для сравниваемого диапазона? Например, у меня есть следующие рейтинги фильмов Shane; [5, 5, 5, 5, 5, 5, 5] и список рейтингов Jaycee; [1, 1, 1, 1, 1, 1, 1], они не имеют 5 звезд. Притворите, что это слова .values () из словаря, и фильмы для каждого списка.Сходство между списком номеров в диапазоне?
При использовании следующих функций:
from math import *
def square_rooted(x):
return round(sqrt(sum([a*a for a in x])),3)
def cosine_similarity(x,y):
numerator = sum(a*b for a,b in zip(x,y))
denominator = square_rooted(x)*square_rooted(y)
return round(numerator/float(denominator),3)
print cosine_similarity([5, 5, 5, 5, 5, 5, 5], [1, 1, 1, 1, 1, 1, 1])
Выход равен 1.0, когда он должен быть рядом с нижним концом отношения, вероятно, около 0,5, так как это между 5 и 1. Как бы это было сделано ?
Затем есть другой метод, который бы точно дал результат от 0.0 до 1.0 на основе сходства чисел? –
Хм, это будет зависеть от того, что вы подразумеваете под «подобием» ... но мне кажется, что то, что вы хотите, является подобием, независимым от направления - только на основе ценности. Как бы вы хотели, чтобы ваше значение сходства велось на самом деле? – Ian
Я думал о рейтинге подобия, основанном на разнице чисел, чем выше отношение, тем выше сходство –