Implementation of K Nearest Neighbours with Euclidean Distance and Weighted based on distance.(Weighted KNN)

Iris DataSet is loaded from sklearn.

X_train[:3]
array([[5.2, 3.5, 1.5, 0.2],
       [5.5, 4.2, 1.4, 0.2],
       [5.9, 3. , 5.1, 1.8]])
y_train[:3]
array([0, 0, 2])
print(f"Classes = {list(Counter(y_train).keys())}")
Classes = [0, 2, 1]

class KNearestNeighbors[source]

KNearestNeighbors(k, distance_metric='standard')

K Nearest Neighbour Algorithm , Standard and Weighted KNN

euclidean_distance[source]

euclidean_distance(x1, x2)

Euclidean distance between numpy arrays

distance_weights[source]

distance_weights(pool, labels)

Calculate weights based on distance

KNearestNeighbors.predict[source]

KNearestNeighbors.predict(X)

Prediction for samples.

Args:

X: Numpy array of shape(m, n)

Returns:

array of shape (m,)
knn =  KNearestNeighbors(5, distance_metric = "standard")

knn.fit(X_train, y_train)

pred = knn.predict(X_test)
 accuracy(y_test, pred)
0.9433962264150944
knn =  KNearestNeighbors(5, distance_metric = "weighted KNN")

knn.fit(X_train, y_train)

pred = knn.predict(X_test)
 accuracy(y_test, pred)
0.9433962264150944