Skip to content

Commit 47ddba1

Browse files
Added cosine similarity (TheAlgorithms#7001)
* Added cosine similarity * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent bd50a30 commit 47ddba1

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

machine_learning/similarity_search.py

+17
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import math
1313

1414
import numpy as np
15+
from numpy.linalg import norm
1516

1617

1718
def euclidean(input_a: np.ndarray, input_b: np.ndarray) -> float:
@@ -135,6 +136,22 @@ def similarity_search(
135136
return answer
136137

137138

139+
def cosine_similarity(input_a: np.ndarray, input_b: np.ndarray) -> float:
140+
"""
141+
Calculates cosine similarity between two data.
142+
:param input_a: ndarray of first vector.
143+
:param input_b: ndarray of second vector.
144+
:return: Cosine similarity of input_a and input_b. By using math.sqrt(),
145+
result will be float.
146+
147+
>>> cosine_similarity(np.array([1]), np.array([1]))
148+
1.0
149+
>>> cosine_similarity(np.array([1, 2]), np.array([6, 32]))
150+
0.9615239476408232
151+
"""
152+
return np.dot(input_a, input_b) / (norm(input_a) * norm(input_b))
153+
154+
138155
if __name__ == "__main__":
139156
import doctest
140157

0 commit comments

Comments
 (0)