Skip to content

Add cosine similarity algorithm#14730

Closed
anandmt wants to merge 1 commit into
TheAlgorithms:masterfrom
anandmt:add-cosine-similarity
Closed

Add cosine similarity algorithm#14730
anandmt wants to merge 1 commit into
TheAlgorithms:masterfrom
anandmt:add-cosine-similarity

Conversation

@anandmt
Copy link
Copy Markdown

@anandmt anandmt commented May 28, 2026

Description

Added cosine_similarity() to maths/ — a fundamental similarity metric missing from the collection.

The repository has Jaccard similarity, Euclidean distance, Manhattan distance, Minkowski distance, and Chebyshev distance, but no cosine similarity. This is one of the most widely used similarity metrics in machine learning, NLP, information retrieval, and recommendation systems.

Implementation

  • Pure Python implementation with no external dependencies
  • Calculates (A · B) / (||A|| × ||B||) using dot product and L2 norms
  • Full type hints (list[float] input, float output)
  • Comprehensive doctests:
    • Identical vectors → 1.0
    • Opposite vectors → -1.0
    • Orthogonal vectors → 0.0
    • Arbitrary vectors with verified results
    • Error cases: empty vectors, dimension mismatch, zero magnitude
  • Follows existing code style from jaccard_similarity.py

Reference

https://en.wikipedia.org/wiki/Cosine_similarity

Implement cosine_similarity() in maths/ to complement existing
distance/similarity metrics (Jaccard, Euclidean, Manhattan, etc.).

Includes type hints, comprehensive doctests covering identical,
opposite, orthogonal vectors, and error cases (empty, mismatched
dimensions, zero magnitude).
@algorithms-keeper
Copy link
Copy Markdown

Closing this pull request as invalid

@anandmt, this pull request is being closed as none of the checkboxes have been marked. It is important that you go through the checklist and mark the ones relevant to this pull request. Please read the Contributing guidelines.

If you're facing any problem on how to mark a checkbox, please read the following instructions:

  • Read a point one at a time and think if it is relevant to the pull request or not.
  • If it is, then mark it by putting a x between the square bracket like so: [x]

NOTE: Only [x] is supported so if you have put any other letter or symbol between the brackets, that will be marked as invalid. If that is the case then please open a new pull request with the appropriate changes.

@algorithms-keeper algorithms-keeper Bot added the awaiting reviews This PR is ready to be reviewed label May 28, 2026
@anandmt anandmt deleted the add-cosine-similarity branch May 28, 2026 08:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting reviews This PR is ready to be reviewed invalid

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant