KNN: distance and neighbor lookup
Beginner classical-mlinstance-basedknn
Implement:
def pairwise_distances(input: np.ndarray, queries: np.ndarray) -> np.ndarray:
"""shape (n_queries, n_samples): Euclidean distance, every query to every sample."""
def knn_predict(input: np.ndarray, labels: np.ndarray, queries: np.ndarray, k: int) -> np.ndarray:
"""shape (n_queries,): majority class among each query's k nearest neighbors."""
- One vectorized expression for
pairwise_distances, no loop over samples or queries.
- Ties in the vote are broken by the lower class label, same convention
01-random-forest-majority-vote uses.