Writing our own K Nearest Neighbours in Code
https://pythonprogramming.net/coding-k-nearest-neighbors-machine-learning-tutorial/
# imports import numpy as np from math import sqrt import matplotlib.pyplot as plt import warnings from collections import Counter # To set charts to save as images we need to change the default behaviour from matplotlib import style # inport style to change default behaviour of plot style.use('ggplot') # use ggplot dataset = {'k':[[1,2],[2,3],[3,1]], 'r':[[6,5],[7,7],[8,6]]} # defines as a dictionary 2 classes (k&r) with 3 features (lists of lists) new_features = [5,7] ## Expanded one line for loop #for i in dataset: # for ii in dataset[i]: # plt.scatter(ii[0],ii[1],s=100, color=i) # define function def K_nearest_neighbours(data, predict, k=3): if len(data) >= k: warnings.warn('K is set to value less than total voting groups!') distances = [] for group in data: for features in data[group]: euclidean_distance = np.linalg.norm(np.array(features)-np.array(predict)) distances.append([euclidean_distance, group]) votes = [i[1] for i in sorted(distances) [:k]] print(Counter(votes).most_common(1)) vote_result = Counter(votes).most_common(1)[0][0] return vote_result # generate results results = K_nearest_neighbours(dataset, new_features, k=3) print(results) [[plt.scatter(ii[0],ii[1],s=100,color=i) for ii in dataset[i]] for i in dataset] # one line for loop plt.scatter(new_features[0], new_features[1], color=results,s=100) plt.show()