Skip to content
Back to skills

Knn Distance Threshold Matching

ASecurity

KNN-based retrieval with grid-searched distance threshold to convert embedding neighbors into match predictions

  • 61 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 12, 2026
ai-agentspythongo

Security analysis

A100/100

Scanned September 12, 2026

npx -y skills add wenmin-wu/ds-skills --skill knn-distance-threshold-matching --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Knn Distance Threshold Matching?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Knn Distance Threshold Matching
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/wenmin-wu-knn-distance-threshold-matching/badge)](https://www.skillsdirectory.com/skills/wenmin-wu-knn-distance-threshold-matching)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: cv-knn-distance-threshold-matching
description: KNN-based retrieval with grid-searched distance threshold to convert embedding neighbors into match predictions
domain: cv
---

# KNN Distance Threshold Matching

## Overview

After extracting embeddings (image or text), find candidate matches via K-nearest neighbors, then apply a distance threshold to decide which neighbors are true matches. Grid-search the threshold on a validation set using F1 score. Optionally filter outliers using z-score on the distance distribution per query.

## Quick Start

```python
import numpy as np
from sklearn.neighbors import NearestNeighbors  # or cuml.neighbors

def find_matches(embeddings, ids, threshold, k=50):
    """Find matching items via KNN + distance threshold.
    
    Args:
        embeddings: (N, D) normalized feature vectors
        ids: array of item identifiers
        threshold: max distance to consider a match
        k: number of neighbors to retrieve
    Returns:
        list of matched ID arrays per query
    """
    knn = NearestNeighbors(n_neighbors=min(k, len(embeddings)), metric='cosine')
    knn.fit(embeddings)
    distances, indices = knn.kneighbors(embeddings)
    
    predictions = []
    for i in range(len(embeddings)):
        mask = distances[i] < threshold
        predictions.append(ids[indices[i][mask]])
    return predictions

# Grid search optimal threshold
best_score, best_thresh = 0, 0
for thresh in np.arange(0.1, 1.0, 0.05):
    preds = find_matches(val_embeddings, val_ids, thresh)
    score = compute_f1(val_labels, preds)
    if score > best_score:
        best_score, best_thresh = score, thresh
```

## Key Decisions

- **Cosine vs L2**: cosine distance for normalized embeddings; L2 if unnormalized
- **K=50**: retrieve more neighbors than expected matches — threshold handles filtering
- **Grid search step**: 0.05 is a good start; narrow to 0.01 around the best range
- **Per-query outlier filtering**: use z-score on distances to adaptively tighten threshold

## References

- Source: [unsupervised-baseline-arcface](https://www.kaggle.com/code/ragnar123/unsupervised-baseline-arcface)
- Competition: Shopee - Price Match Guarantee

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…