Advertisement
Guest User

Untitled

a guest
Apr 21st, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.01 KB | None | 0 0
  1. import numpy as np
  2.  
  3. def d(test,m):
  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+1])
  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(test[i,0]))
  21.        
  22.     re = 0
  23.     rm = 0
  24.     for i in range(len(test)):
  25.         if epred[i]==test[i,0]:
  26.             re+=1
  27.         if mpred[i]==test[i,0]:
  28.             rm+=1      
  29.     print("Euclidian distance accuracy - "+str(round(100*re/len(test)))+"%")
  30.     print("Manhattan distance accuracy - "+str(round(100*rm/len(test)))+"%")
  31.    
  32.    
  33. file = open("fisher.txt", "r")
  34. lines = []
  35. for i,line in enumerate(file):
  36.     if i!=0:
  37.         lines.append([int(x) for x in line.strip().split("\t")])
  38.  
  39. data = np.array(lines)
  40. train = data[0:119,:]
  41. test = data[120:,:]
  42.  
  43. T0 = data[data[:,0] == 0,1:]
  44. T1 = data[data[:,0] == 1,1:]
  45. T2 = data[data[:,0] == 2,1:]
  46.  
  47. m = []
  48. for i in range(4):
  49.     m.append([np.mean(T0[:,i]),np.mean(T1[:,i]),np.mean(T2[:,i])])
  50. m = np.array(m)
  51.  
  52. X1 = train[:,1]
  53. X2 = train[:,2]
  54. X3 = train[:,3]
  55. X4 = train[:,4]
  56.  
  57. Mu1 = np.mean(X1)
  58. Mu2 = np.mean(X2)
  59. Mu3 = np.mean(X3)
  60. Mu4 = np.mean(X4)
  61.  
  62. d(test,m)
  63.  
  64.  
  65.  #PCA
  66.  
  67. X1p = X1-Mu1
  68. X2p = X2-Mu2
  69. X3p = X3-Mu3
  70. X4p = X4-Mu4
  71.  
  72. cm = np.cov([X1p,X2p,X3p,X4p])
  73.  
  74. w, v = np.linalg.eig(cm)
  75. index = np.argsort(-w)
  76. fv = v[:,index]
  77. rfv = np.transpose(fv)
  78. rzm = np.array([X1p, X2p, X3p, X4p])
  79. fd = np.transpose(np.matmul(rfv, rzm))
  80.  
  81. f1 =fd[:,0]
  82. f2 =fd[:,1]
  83. f3 =fd[:,2]
  84.  
  85. for i in range(len(test)):
  86.     for f in range(3):
  87.         test[i,f+1]=fd[i,f]
  88.     np.delete(test[i],4)
  89.  
  90. d(test,m)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement