yoyo106

lda

Apr 28th, 2021 (edited)
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.87 KB | None | 0 0
  1. D = []
  2. for class_number in range(40):
  3.     current_class = []
  4.     for img in range(5):
  5.         current_class.append(train_X[class_number*5 + img])
  6.     D.append(current_class)
  7. print(np.shape(D))
  8.  
  9.  
  10. means = []
  11. for current_class in D:
  12.     means.append(np.mean(current_class, axis=0))
  13. print(np.shape(means))
  14. overall_mean = np.array([np.mean(train_X, axis=0)])
  15. print(np.shape(overall_mean))
  16.  
  17.  
  18. nk = 5
  19. Sb = np.zeros((10304, 10304))
  20. for mu in means:
  21.     sub = mu - overall_mean
  22.     Sb += nk*(np.dot(sub.T, sub))
  23. print(np.shape(Sb))
  24.  
  25.  
  26. Z = []
  27. for mu, Di in zip(means, D):
  28.     current_z = Di - np.ones((5,1))*mu
  29.     Z.append(current_z)
  30. Z = np.array(Z)
  31. print(np.shape(Z))
  32.  
  33.  
  34. S = np.zeros((10304,10304))
  35. for z in Z:
  36.     S += np.dot(z.T, z)
  37. print(np.shape(S))
  38.  
  39.  
  40. S_inv = np.linalg.inv(S)
  41. print(np.shape(S_inv))
  42. A = np.dot(S_inv, Sb)
  43. print(np.shape(A))
  44.  
  45.  
  46. eigen_values, eigen_vectors = np.linalg.eigh(A)
  47. print(np.shape(eigen_values))
  48. print(np.shape(eigen_vectors))
  49.  
  50.  
  51. eigen_vectors = eigen_vectors.T
  52. idx = np.argsort(eigen_values)[::-1]
  53. eigen_values = eigen_values[idx]
  54. eigen_vectors = eigen_vectors[:,idx]
  55.  
  56.  
  57. dominant_eigen_vectors = []
  58. for i,row in zip(range(39),eigen_vectors.T):
  59.     dominant_eigen_vectors.append(row)
  60. dominant_eigen_vectors = np.array(dominant_eigen_vectors)
  61. print(np.shape(dominant_eigen_vectors))
  62.  
  63.  
  64. from sklearn.neighbors import KNeighborsClassifier
  65.  
  66. neighbors=np.array([1,3,5,7])
  67. accuracy=[]
  68. projected_train=np.dot(train_X,dominant_eigen_vectors.T)
  69. projected_test=np.dot(test_X,dominant_eigen_vectors.T)
  70. for neighbor_num in neighbors:
  71.     print(f'neighbors = {neighbor_num}')
  72.     neigh = KNeighborsClassifier(n_neighbors=neighbor_num,weights = 'distance')
  73.     neigh.fit(projected_train,train_y)
  74.     accuracy.append(neigh.score(projected_test,test_y))
  75.     print(neigh.score(projected_test,test_y),neigh.score(projected_train,train_y),'\n\n')
  76.  
Add Comment
Please, Sign In to add comment