X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=norms.py;h=b8e4bf1ef82c8b8ea6f85c0e3c3597d90b7d9b8b;hb=ee8bb0b7953e32c988f4faa72c0eb4c6cd6e4ea8;hp=3d6d37df7f2e4f9f576c9cd4ef1a2341aa48d016;hpb=3e8d2bd8cd7c623116fa3d2b77db954f51b191e4;p=cipher-training.git diff --git a/norms.py b/norms.py index 3d6d37d..b8e4bf1 100644 --- a/norms.py +++ b/norms.py @@ -159,17 +159,17 @@ def harmonic_mean(frequencies1, frequencies2): return len(frequencies1) / total -def cosine_distance(frequencies1, frequencies2): +def cosine_similarity(frequencies1, frequencies2): """Finds the distances between two frequency profiles, expressed as dictionaries. Assumes every key in frequencies1 is also in frequencies2 - >>> cosine_distance({'a':1, 'b':1, 'c':1}, {'a':1, 'b':1, 'c':1}) # doctest: +ELLIPSIS + >>> cosine_similarity({'a':1, 'b':1, 'c':1}, {'a':1, 'b':1, 'c':1}) # doctest: +ELLIPSIS 1.0000000000... - >>> cosine_distance({'a':2, 'b':2, 'c':2}, {'a':1, 'b':1, 'c':1}) # doctest: +ELLIPSIS + >>> cosine_similarity({'a':2, 'b':2, 'c':2}, {'a':1, 'b':1, 'c':1}) # doctest: +ELLIPSIS 1.0000000000... - >>> cosine_distance({'a':0, 'b':2, 'c':0}, {'a':1, 'b':1, 'c':1}) # doctest: +ELLIPSIS + >>> cosine_similarity({'a':0, 'b':2, 'c':0}, {'a':1, 'b':1, 'c':1}) # doctest: +ELLIPSIS 0.5773502691... - >>> cosine_distance({'a':0, 'b':1}, {'a':1, 'b':1}) # doctest: +ELLIPSIS + >>> cosine_similarity({'a':0, 'b':1}, {'a':1, 'b':1}) # doctest: +ELLIPSIS 0.7071067811... """ numerator = 0 @@ -179,7 +179,7 @@ def cosine_distance(frequencies1, frequencies2): numerator += frequencies1[k] * frequencies2[k] length1 += frequencies1[k]**2 for k in frequencies2.keys(): - length2 += frequencies2[k] + length2 += frequencies2[k]**2 return numerator / (length1 ** 0.5 * length2 ** 0.5)