Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.55 KB | None | 0 0
  1. def outOfK (inputArray, numberOfAttributes, numberOfObservations):
  2. lengthOfOutOfK = np.ones(30)
  3. lengthOfOutOfK[1]= 6
  4. lengthOfOutOfK[2] = 4
  5. lengthOfOutOfK[5] = 10
  6. lengthOfOutOfK[6] = 7
  7. lengthOfOutOfK[17] = 7
  8. lengthOfOutOfK[28] = 7
  9. lengthOfOutOfK[29] = 7
  10. returnArray = np.zeros((194,71)) # creates returnArray
  11. returnCount = 0
  12. for i in range (numberOfAttributes):
  13. if i == 0:
  14. returnCount = returnCount
  15. elif i in (1,2,5,6,17,28,29): # defines the positions to do 1-out-of-K
  16. for j in range (int(lengthOfOutOfK[i])):
  17. if i in (1,2,5,6): # already defined
  18. if i == 6:
  19. for h in range (194):
  20. returnArray[h,returnCount + int((inputArray[h,i]))] = 1
  21. else:
  22. for h in range (194):
  23. returnArray[h,returnCount + int((inputArray[h,i])) - 1] = 1
  24. elif i in (17,28,29): # colors
  25. for h in range (194): # goes through all observations
  26. if inputArray[h,i] == 'red':
  27. returnArray[h,returnCount] = 1
  28. if inputArray[h,i] == 'green':
  29. returnArray[h,returnCount+1] = 1
  30. if inputArray[h,i] == 'blue':
  31. returnArray[h,returnCount+2] = 1
  32. if inputArray[h,i] == 'gold':
  33. returnArray[h,returnCount+3] = 1
  34. if inputArray[h,i] == 'white':
  35. returnArray[h,returnCount+4] = 1
  36. if inputArray[h,i] == 'black':
  37. returnArray[h,returnCount+5] = 1
  38. if inputArray[h,i] in ('orange', 'brown'):
  39. returnArray[h,returnCount+6] = 1
  40. else:
  41. returnArray[:,returnCount] = inputArray[:,i]
  42. if i == 1:
  43. returnCount += 5
  44. elif i == 2:
  45. returnCount += 3
  46. elif i == 5:
  47. returnCount += 9
  48. elif i in (6,17,28,29):
  49. returnCount += 6
  50. returnCount += 1
  51. returnArray = np.delete(returnArray, 0, 1) # removes attribute of countries
  52. returnArray = np.delete(returnArray, np.array([5,6,7,8,9,10,11]), 1) # removes attribute of religion
  53. returnArray = np.delete(returnArray, 3, 1) # removes attribute of population
  54.  
  55. return returnArray
  56.  
  57. dataOutOfK_ALL = outOfK(dataInArray, attributes, observations)
  58.  
  59.  
  60.  
  61. #1) Subtracts mean from each and devides med standard deviation
  62. for i in range(len(dataOutOfK_ALL[0, :])):
  63. if (i >= 0 and i <= 5): # Landmass
  64. dataOutOfK_ALL[:, i] = (dataOutOfK_ALL[:, i] - np.mean(dataOutOfK_ALL[:, i])) / math.sqrt(6)
  65. elif (i >= 6 and i <= 9): # zone
  66. dataOutOfK_ALL[:, i] = (dataOutOfK_ALL[:, i] - np.mean(dataOutOfK_ALL[:, i])) / math.sqrt(4)
  67. elif (i >= 11 and i <= 20): # language
  68. dataOutOfK_ALL[:, i] = (dataOutOfK_ALL[:, i] - np.mean(dataOutOfK_ALL[:, i])) / math.sqrt(10)
  69. elif (i >= 30 and i <= 36): # Mainhue
  70. dataOutOfK_ALL[:, i] = (dataOutOfK_ALL[:, i] - np.mean(dataOutOfK_ALL[:, i])) / math.sqrt(7)
  71. elif (i >= 59):
  72. dataOutOfK_ALL[:, i] = (dataOutOfK_ALL[:, i] - np.mean(dataOutOfK_ALL[:, i])) / math.sqrt(7)
  73. else:
  74. dataOutOfK_ALL[:, i] = (dataOutOfK_ALL[:, i] - np.mean(dataOutOfK_ALL[:, i])) / np.std(dataOutOfK_ALL[:, i])
  75. # 2) Doing SVD
  76. U, S, V = np.linalg.svd(dataOutOfK_ALL, full_matrices=False)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement