INNER CODE UNIT · Python
KNN
ankonzoid/LearningX · basic_ML/classification/knn.py:10
class KNN():
def __init__(self, k=10):
self.k = k
def fit(self, X, y):
self.X_train = X
self.y_train = y
def predict(self, X):
# Assign class labels to data based on closest distance to cluster centers
N, d = X.shape
y_pred = -1 * np.zeros(len(X), dtype=int)
for i in range(N):
neg_distances = -np.array([np.linalg.norm(X[i] - x_train_j) for x_train_j in self.X_train])
idx_topk = neg_distances.argsort()[-self.k:][::-1] # top-k samples in negative distance
nearby_classes = list(self.y_train[idx_topk])
y_pred[i] = int(max(set(nearby_classes), key=nearby_classes.count)) # predict modal class