Advertisement
Guest User

Untitled

a guest
Apr 24th, 2019
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.27 KB | None | 0 0
  1. import numpy as np
  2.  
  3. def d(test,m,con,cls):
  4. epred = []
  5. mpred = []
  6. for i in range(len(test)):
  7. x = []
  8. euc = []
  9. man = []
  10. for f in range(len(test[0])-1):
  11. x.append(test[i,f+con])
  12. for c in range(3):
  13. me = m[:,c]
  14. euc.append(np.sqrt(sum(([(i - j)**2 for i, j in zip(x, me)]))))
  15. man.append(abs(sum(x)-sum(m[:,c])))
  16. epred.append(euc.index(min(euc)))
  17. mpred.append(man.index(min(man)))
  18. #print("predict by euclidean - "+str(epred[i]))
  19. #print("predict by manhattan - "+str(mpred[i]))
  20. #print("real - "+str(cls[i]))
  21.  
  22. re = 0
  23. rm = 0
  24.  
  25. for i in range(len(test)):
  26. if epred[i]==cls[i]:
  27. re+=1
  28. if mpred[i]==cls[i]:
  29. rm+=1
  30. print("Euclidian distance accuracy - "+str(round(100*re/len(test)))+"%")
  31. print("Manhattan distance accuracy - "+str(round(100*rm/len(test)))+"%")
  32.  
  33.  
  34. #Read file
  35. file = open("fisher.txt", "r")
  36. lines = []
  37. for i,line in enumerate(file):
  38. if i!=0:
  39. lines.append([int(x) for x in line.strip().split("\t")])
  40. print("--- BEFORE PCA ---")
  41. data = np.array(lines)
  42. cls = data[:,0]
  43. train = data[0:119,:]
  44. test = data[119:,:]
  45.  
  46. T0 = train[train[:,0] == 0,1:]
  47. T1 = train[train[:,0] == 1,1:]
  48. T2 = train[train[:,0] == 2,1:]
  49.  
  50. m = []
  51. for i in range(4):
  52. m.append([np.mean(T0[:,i]),np.mean(T1[:,i]),np.mean(T2[:,i])])
  53. m = np.array(m)
  54.  
  55.  
  56. d(test,m,1,cls[119:])
  57.  
  58.  
  59. #PCA
  60. X1 = data[:,1]
  61. X2 = data[:,2]
  62. X3 = data[:,3]
  63. X4 = data[:,4]
  64.  
  65. Mu1 = np.mean(X1)
  66. Mu2 = np.mean(X2)
  67. Mu3 = np.mean(X3)
  68. Mu4 = np.mean(X4)
  69.  
  70.  
  71. X1p = X1-Mu1
  72. X2p = X2-Mu2
  73. X3p = X3-Mu3
  74. X4p = X4-Mu4
  75.  
  76. cm = np.cov([X1p,X2p,X3p,X4p])
  77.  
  78. w, v = np.linalg.eig(cm)
  79. index = np.argsort(-w)
  80. fv = v[:,index]
  81. rfv = np.transpose(fv)
  82. rzm = np.array([X1p, X2p, X3p, X4p])
  83. fd = np.transpose(np.matmul(rfv, rzm))
  84. fd = fd[:,:3]
  85.  
  86. data = fd
  87. train = data[0:119,:]
  88. test = data[119:,:]
  89. T0 = train[cls[:119] == 0,:]
  90. T1 = train[cls[:119] == 1,:]
  91. T2 = train[cls[:119] == 2,:]
  92.  
  93. print(" --- AFTER PCA ---")
  94. m = []
  95. cls = cls[119:]
  96. for i in range(3):
  97. m.append([np.mean(T0[:,i]),np.mean(T1[:,i]),np.mean(T2[:,i])])
  98. m = np.array(m)
  99. print(m)
  100. d(test,m,0,cls)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement