Advertisement
Guest User

Untitled

a guest
Dec 22nd, 2014
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.53 KB | None | 0 0
  1. #!/usr/bin/env python
  2. from feast import *
  3. import numpy as np
  4. import csv
  5.  
  6.  
  7. def check_result(selected_features, n_relevant):
  8. selected_features = sorted(selected_features)
  9. success = True
  10. for k in range(n_relevant):
  11. if k != selected_features[k]:
  12. success = False
  13. return success
  14.  
  15. def read_digits(fname='digit.txt'):
  16. '''
  17. read_digits(fname='digit.txt')
  18.  
  19. read a data file that contains the features and class labels.
  20. each row of the file is a feature vector with the class
  21. label appended.
  22. '''
  23.  
  24. fw = csv.reader(open(fname,'rb'), delimiter='\t')
  25. data = []
  26. for line in fw:
  27. data.append( [float(x) for x in line] )
  28. data = np.array(data, order="F")
  29. labels = data[:,len(data.transpose())-1]
  30. data = data[:,:len(data.transpose())-1]
  31. return data, labels
  32.  
  33. def uniform_data(n_observations = 1000, n_features = 50, n_relevant = 5):
  34. import numpy as np
  35. xmax = 10
  36. xmin = 0
  37. data = 1.0*np.random.randint(xmax + 1, size = (n_features, n_observations))
  38. labels = np.zeros(n_observations)
  39. delta = n_relevant * (xmax - xmin) / 2.0
  40.  
  41. for m in range(n_observations):
  42. zz = 0.0
  43. for k in range(n_relevant):
  44. zz += data[k, m]
  45. if zz > delta:
  46. labels[m] = 1
  47. else:
  48. labels[m] = 2
  49. data = data.transpose()
  50. return data, labels
  51.  
  52.  
  53.  
  54.  
  55.  
  56. n_relevant = 5
  57. data_source = 'uniform' # set the data set we want to test
  58.  
  59.  
  60. if data_source == 'uniform':
  61. data, labels = uniform_data(n_relevant = n_relevant)
  62. elif data_source == 'digits':
  63. data, labels = read_digits('digit.txt')
  64.  
  65. n_observations = len(data) # number of samples in the data set
  66. n_features = len(data.transpose()) # number of features in the data set
  67. n_select = 15 # how many features to select
  68. method = 'MIM' # feature selection algorithm
  69.  
  70.  
  71. print '---> Information'
  72. print ' :n_observations - ' + str(n_observations)
  73. print ' :n_features - ' + str(n_features)
  74. print ' :n_select - ' + str(n_select)
  75. print ' :algorithm - ' + str(method)
  76. print ' '
  77. print '---> Running unit tests on FEAST 4 Python... '
  78.  
  79.  
  80. #################################################################
  81. #################################################################
  82. print ' Running BetaGamma... '
  83. sf = BetaGamma(data, labels, n_select, beta=0.5, gamma=0.5)
  84. if check_result(sf, n_relevant) == True:
  85. print ' BetaGamma passed!'
  86. else:
  87. print ' BetaGamma failed!'
  88. print sf
  89.  
  90. #################################################################
  91. #################################################################
  92. print ' Running CMIM... '
  93. sf = CMIM(data, labels, n_select)
  94. if check_result(sf, n_relevant) == True:
  95. print ' CMIM passed!'
  96. else:
  97. print ' CMIM failed!'
  98. print sf
  99.  
  100. #################################################################
  101. #################################################################
  102. print ' Running CondMI... '
  103. sf = CondMI(data, labels, n_select)
  104. if check_result(sf, n_relevant) == True:
  105. print ' CondMI passed!'
  106. else:
  107. print ' CondMI failed!'
  108. print sf
  109.  
  110. #################################################################
  111. #################################################################
  112. print ' Running DISR... '
  113. sf = DISR(data, labels, n_select)
  114. if check_result(sf, n_relevant) == True:
  115. print ' DISR passed!'
  116. else:
  117. print ' DISR failed!'
  118. print sf
  119.  
  120. #################################################################
  121. #################################################################
  122. print ' Running ICAP... '
  123. sf = ICAP(data, labels, n_select)
  124. if check_result(sf, n_relevant) == True:
  125. print ' ICAP passed!'
  126. else:
  127. print ' ICAP failed!'
  128. print sf
  129.  
  130. #################################################################
  131. #################################################################
  132. print ' Running JMI... '
  133. sf = JMI(data, labels, n_select)
  134. if check_result(sf, n_relevant) == True:
  135. print ' JMI passed!'
  136. else:
  137. print ' JMI failed!'
  138. print sf
  139.  
  140. #################################################################
  141. #################################################################
  142. print ' Running mRMR... '
  143. sf = mRMR(data, labels, n_select)
  144. if check_result(sf, n_relevant) == True:
  145. print ' mRMR passed!'
  146. else:
  147. print ' mRMR failed!'
  148. print sf
  149. #################################################################
  150. #################################################################
  151. print ' Running MIM...'
  152. sf = MIM(data, labels, n_select)
  153. if check_result(sf, n_relevant) == True:
  154. print ' MIM passed!'
  155. else:
  156. print ' MIM failed!'
  157. print sf
  158. print '---> Done unit tests!'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement