CJamie

knnimpl

Mar 23rd, 2022
713
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.14 KB | None | 0 0
  1. import numpy as np
  2. import pandas as pd
  3. import operator
  4.  
  5. def ed(x1, x2):
  6.     return np.sqrt(np.sum((x1-x2)**2))
  7.  
  8. def predict(K, x_train, y_train, x_test):
  9.   predictions = []
  10.   for i in range(len(x_test)):            
  11.     dist = np.array([ed(x_test[i], t) for t in x_train])
  12.     dist_sorted = dist.argsort()[:K]
  13.     nc = {}
  14.     for idx in dist_sorted:
  15.       if y_train[idx] in nc:
  16.         nc[y_train[idx]] += 1
  17.       else:
  18.         nc[y_train[idx]] = 1  
  19.     snc = sorted(nc.items(), reverse=True)
  20.     predictions.append(snc[0][0])
  21.   return predictions
  22.  
  23. from sklearn.datasets import load_iris
  24. from sklearn.model_selection import train_test_split
  25. from sklearn.metrics import accuracy_score
  26. import matplotlib.pylab as plt
  27. data = load_iris()
  28. x_train,x_test,y_train,y_test = train_test_split(data['data'],data['target'],test_size=0.1,random_state=0)
  29. predictions=predict(5, x_train, y_train, x_test)
  30. print(x_test.shape,y_train.shape,x_train.shape,y_test.shape)
  31. # print(x_train, '\n\n\n',y_train[0])
  32. pd.scatter_matrix(x_train, y_train)
  33. # plt.scatter(x_test, y_train[0])
  34. print(predictions)
  35. print('Accuracy:', accuracy_score(y_test,predictions))
  36.  
Advertisement
Add Comment
Please, Sign In to add comment