1
比較する範囲の最大値と最小値を定義するにはどうすればよいですか?たとえば、シェーンの次のムービーの評価があります。 [5,5,5,5,5,5,5]とJayceeによる評価のリスト。 [1,1,1,1,1,1]、彼らは5つ星からです。これらは辞書からの.values()であり、ムービーは各リストの順番です。それは5と1の間、これが行われるだろうかだとして、それは、おそらく、比率の低い終わり近く周りに0.5であるべきとき範囲内の番号リスト間の類似度は?
が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.0〜1.0の出力を正確に与える別の方法がありますか? –
ええと、それはあなたが "類似性"を意味するかどうかにかかっています...しかし、あなたが望むのは方向性から独立した類似性です。あなたの価値の類似性を実際にどのように行動させたいですか? – Ian
数字の違いに基づいて類似度評価を考えていましたが、比率が高いほど、類似度が高いほど –