Python Machine Learning

K Nearest Neighbor Algorithm

Algorithm

Data Sample

Height (CM) Weight (KG) Class
16751Underweight
18262Normal
17669Normal
17364Normal
17265Normal
17456Underweight
16958Normal
17357Normal
17055Normal
17057?
X = [
    [167, 51],
    [182, 62],
    [176, 69],
    [173, 64],
    [172, 65],
    [174, 56],
    [169, 58],
    [173, 57],
    [170, 55]
]
y = ['Underweight', 'Normal', 'Normal', 'Normal', 'Normal', 'Underweight', 'Normal', 'Normal', 'Normal']
x = [[170, 57]]

Euclidean

$$d(x,y) = \sqrt{\sum{(x_i - y_i)^2}}$$

Step 1:

Select k = 5

Calculate distance d(X, x)

from sklearn.metrics.pairwise import euclidean_distances
euclidean_distances(X, x)

Build model

from sklearn.neighbors import KNeighborsClassifier
classifier = KNeighborsClassifier(n_neighbors = 5)
classifier.fit(X, y)

Predict

x = [[170, 57]]
classifier.predict(x)

Predict Probability

classifier.predict_proba(x)

Accuracy score

classifier.score(X, y)

Data Sample

BrightnessSaturationClass
4020Red
5050Blue
6090Blue
1025Red
7070Blue
6010Red
2580Blue
2035?
Youtubehttps://www.youtube.com/watch?v=HZT0lxD5h6k
https://www.youtube.com/watch?v=T0YkfWssHjk
sklearnhttps://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsClassifier.html