8. Nearest Neighbors

8.1. Ball tree

[1]:
import numpy as np
from sklearn.neighbors import BallTree

X = np.array([
    [-2, -2],
    [-1, -1],
    [0, 0],
    [1, 1],
    [2, 2]])

q = np.array([
    [0, 0],
    [-1.5, -1.5]
])

tree = BallTree(X)
distance, indices = tree.query(q, k=2)

print('distances')
print(distance)
print('-')
print('indices')
print(indices)
distances
[[0.         1.41421356]
 [0.70710678 0.70710678]]
-
indices
[[2 1]
 [1 0]]

8.2. KD tree

[2]:
from sklearn.neighbors import KDTree


X = np.array([
    [-2, -2],
    [-1, -1],
    [0, 0],
    [1, 1],
    [2, 2]])

q = np.array([
    [0, 0],
    [-1.5, -1.5]
])

tree = KDTree(X)
distance, indices = tree.query(q, k=2)

print('distances')
print(distance)
print('-')
print('indices')
print(indices)
distances
[[0.         1.41421356]
 [0.70710678 0.70710678]]
-
indices
[[2 1]
 [1 0]]

8.3. Nearest centroid

[3]:
from sklearn.neighbors import NearestCentroid

X = np.array([
    [-2, -2],
    [-1, -1],
    [1, 1],
    [2, 2]])

y = np.array([0, 0, 1, 1])

q = np.array([
    [1.5, 1.5],
    [-1.5, -1.5]
])

nc = NearestCentroid()
nc.fit(X, y)

nc.predict(q)
[3]:
array([1, 0])

8.4. Nearest neighbor

[4]:
from sklearn.neighbors import NearestNeighbors

X = np.array([
    [-2, -2],
    [-1, -1],
    [0, 0],
    [1, 1],
    [2, 2]])

q = np.array([
    [0, 0],
    [-1.5, -1.5]
])

nn = NearestNeighbors(n_neighbors=2)
nn.fit(X)
distance, indices = nn.kneighbors(q)

print('distances')
print(distance)
print('-')
print('indices')
print(indices)
distances
[[0.         1.41421356]
 [0.70710678 0.70710678]]
-
indices
[[2 1]
 [0 1]]