from copy import deepcopy if __name__ == '__main__': timeStart = datetime.datetime.now() (train_X, train_y, test_X, test_y) = mushrooms_bfgs.initialize(float(80)/100) N = 22 # Number of Iterations at max can be equal to Number of features - 1 NumberOfFeaturesRemoved = 0 FeaturesRemoved = [] for i in xrange(1, N + 1): # Maximum can remove all the features importanceOfRandomForest = randomForest.netFeatureImportance(train_X, train_y, 15) importanceOfSymbioticAlgorithm = Sampling.test_initialize() #~ print "Feature Importance by Random Forest ", importanceOfRandomForest #~ print "Feature Importance by Symbiotic Algorithm ", importanceOfSymbioticAlgorithm if len(FeaturesRemoved) == 0 : (train_X_Sym, test_X_Sym) = mushrooms_bfgs.featureRemoval(train_X, test_X, [importanceOfSymbioticAlgorithm[i - 1][0]]) (train_X_For, test_X_For) = mushrooms_bfgs.featureRemoval(train_X, test_X, [importanceOfRandomForest[i - 1][0]]) else: trialFeatureSym = deepcopy(FeaturesRemoved) trialFeatureFor = deepcopy(FeaturesRemoved) trialFeatureSym.append(importanceOfSymbioticAlgorithm[i - 1][0]) trialFeatureFor.append(importanceOfRandomForest[i - 1][0]) print trialFeatureFor, trialFeatureSym (train_X_Sym, test_X_Sym) = mushrooms_bfgs.featureRemoval(train_X, test_X, trialFeatureSym) (train_X_For, test_X_For) = mushrooms_bfgs.featureRemoval(train_X, test_X, trialFeatureFor) wilcoxonOut = WilcoxonTest.WilcoxonTest(train_X.ravel(), train_X_Sym.ravel() ,train_X_For.ravel()) if wilcoxonOut == 1: if importanceOfRandomForest[i - 1][0] in FeaturesRemoved: continue FeaturesRemoved.append(importanceOfRandomForest[i - 1][0]) newData_Tr = deepcopy(train_X_For)
if __name__ == '__main__': timeStart = datetime.datetime.now() (train_X, train_y, test_X, test_y) = mushrooms_bfgs.initialize(float(80) / 100) N = 22 # Number of Iterations at max can be equal to Number of features - 1 NumberOfFeaturesRemoved = 0 FeaturesRemoved = [] for i in xrange(1, N + 1): # Maximum can remove all the features importanceOfRandomForest = randomForest.netFeatureImportance( train_X, train_y, 15) importanceOfSymbioticAlgorithm = Sampling.test_initialize() #~ print "Feature Importance by Random Forest ", importanceOfRandomForest #~ print "Feature Importance by Symbiotic Algorithm ", importanceOfSymbioticAlgorithm if len(FeaturesRemoved) == 0: (train_X_Sym, test_X_Sym) = mushrooms_bfgs.featureRemoval( train_X, test_X, [importanceOfSymbioticAlgorithm[i - 1][0]]) (train_X_For, test_X_For) = mushrooms_bfgs.featureRemoval( train_X, test_X, [importanceOfRandomForest[i - 1][0]]) else: trialFeatureSym = deepcopy(FeaturesRemoved) trialFeatureFor = deepcopy(FeaturesRemoved) trialFeatureSym.append(importanceOfSymbioticAlgorithm[i - 1][0]) trialFeatureFor.append(importanceOfRandomForest[i - 1][0]) print trialFeatureFor, trialFeatureSym (train_X_Sym, test_X_Sym) = mushrooms_bfgs.featureRemoval( train_X, test_X, trialFeatureSym) (train_X_For, test_X_For) = mushrooms_bfgs.featureRemoval( train_X, test_X, trialFeatureFor) wilcoxonOut = WilcoxonTest.WilcoxonTest(train_X.ravel(), train_X_Sym.ravel(), train_X_For.ravel())
z_stat_for_symbiotic, p_val_for_symbiotic = stats.ranksums( Symbiotic_output, Original_input) z_stat_for_GA, p_val_for_GA = stats.ranksums(Modified_GA_output, Original_input) print(p_val_for_symbiotic, p_val_for_GA) if max(p_val_for_GA, p_val_for_symbiotic) < 1e-300: return -1 if (p_val_for_GA > p_val_for_symbiotic): print("Forest one is better") return 1 else: print("Symbiotic is better") return 0 if __name__ == '__main__': (train_X, train_y, test_X, test_y) = mushrooms_bfgs.initialize(float(80) / 100) (train_X_Sym, test_X_Sym) = mushrooms_bfgs.featureRemoval(train_X, test_X, [3]) (train_X_For, test_X_For) = mushrooms_bfgs.featureRemoval(train_X, test_X, [16]) #~ print train_X[0], train_X_Sym[0], train_X_For[0] if WilcoxonTest(train_X.ravel(), train_X_Sym.ravel(), train_X_For.ravel()): newData_Tr = train_X_For newData_Ts = test_X_For else: newData_Tr = train_X_Sym newData_Ts = test_X_Sym #~ print WilcoxonTest([1,2,3,4], [1,2,3,5],[0,9,10,11])
Modified Genetic algorithm Returns: The best suited N-1 features for a given distribution or [-1] ''' z_stat_for_symbiotic, p_val_for_symbiotic = stats.ranksums( Symbiotic_output, Original_input) z_stat_for_GA, p_val_for_GA = stats.ranksums( Modified_GA_output, Original_input) print p_val_for_symbiotic, p_val_for_GA if max(p_val_for_GA , p_val_for_symbiotic) < 1e-300: return -1 if (p_val_for_GA > p_val_for_symbiotic): print "Forest one is better" return 1 else: print "Symbiotic is better" return 0 if __name__ == '__main__': (train_X, train_y, test_X, test_y) = mushrooms_bfgs.initialize(float(80)/100) (train_X_Sym, test_X_Sym) = mushrooms_bfgs.featureRemoval(train_X, test_X, [3]) (train_X_For, test_X_For) = mushrooms_bfgs.featureRemoval(train_X, test_X, [16]) #~ print train_X[0], train_X_Sym[0], train_X_For[0] if WilcoxonTest(train_X.ravel(), train_X_Sym.ravel() ,train_X_For.ravel()): newData_Tr = train_X_For newData_Ts = test_X_For else: newData_Tr = train_X_Sym newData_Ts = test_X_Sym #~ print WilcoxonTest([1,2,3,4], [1,2,3,5],[0,9,10,11])