INNER CODE UNIT · Python
fit
ankonzoid/LearningX · basic_ML/classification/knn.py:15
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
return y_pred
# Main driver
if __name__ == "__main__":