# 0))test_set.append(partition1)test_set.append(partition2)test_set.append(partition3)# In[19]:#defining k_nearest_neighbourdef knn(train, test, k): distances

# coding: utf-8# In12:import numpy as npimport mathimport pandas as pdimport matplotlib.pyplot as pltimport matplotlib.patches as mpatches# In13:P = np.array(0.8,0.8,1,1,1,1,1.2,0.8,1,0.8,1.2,1,0.2,1.2,1,4,3,2,3.8,2.8,2,4.2,2.8,2,3.8,3.2,2,4.2,3.2,2,4.4,2.8,2,4.4,3.2,2,3.2,0.4,3,3.2,0.7,3,3.8,0.5,3,3.5,1,3,4,1,3,4,7,3)# In14:np.random.shuffle(P)# In15:P# In16:#plotting the datafor i in P:  if i2 == 1:    plt.scatter(i0,i1,s=40,c=’g’,marker=’x’)  elif i2 == 2:    plt.scatter(i0,i1,s=40,c=’b’,marker=’+’)  else:    plt.scatter(i0,i1,s=40,c=’y’,marker=’o’)    green_patch = mpatches.Patch(color=’green’, label=’Class 1′)blue_patch = mpatches.Patch(color=’blue’, label=’Class 2′)yellow_patch = mpatches.Patch(color=’yellow’, label=’Class 3′)plt.legend(handles=green_patch, blue_patch, yellow_patch)plt.show()# In17:#preparing for 3-fold cross validationpartition1 = P:len(P)//3partition2 = Plen(P)//3 : -len(P)//3partition3 = P-len(P)//3 :# In18:train_set = test_set = train_set.append(np.concatenate((partition2, partition3), axis = 0))train_set.append(np.concatenate((partition1, partition3), axis = 0))train_set.append(np.concatenate((partition1, partition2), axis = 0))test_set.append(partition1)test_set.append(partition2)test_set.append(partition3)# In19:#defining k_nearest_neighbourdef knn(train, test, k):    distances =     for point_i in train:      dist = math.sqrt((point_i0 – test0)**2 + (point_i1 – test1)**2)       distances.append(dist, point_i2)        distances.sort()    classvotes = {}    for i in distances0:k:        if i1 in classvotes:            classvotesi1 += 1        else:            classvotesi1 = 1    return max(classvotes.keys(), key=(lambda k: classvotesk))  # In20:fold = 3avg_accuracy =     k_value = 3,5,7,9for k in k_value:      #looping k value  accuracy =   for i in range(fold):     #looping for cross-validation    correct = 0    total = 0    for j in range(len(test_seti)):      pred = knn(train_seti, test_setij, k)      if pred == test_setij2:        correct += 1      total += 1    accuracy.append(correct/total)      print(“k = “,k,”  Avg Accuracy :”, round(sum(accuracy)/len(accuracy), 3) )  avg_accuracy.append(sum(accuracy)/len(accuracy), k)print(“Best value of k: “, max(avg_accuracy)1, “,  Highest Accuracy =”,round(max(avg_accuracy)0, 3))# In21:#Classifying the new test point  T = (3,2)  print(“Test point (3,2) is predicted to be of class: “, knn(P, np.array((3,2)) , max(avg_accuracy)1))