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)
Beispiel #2
0
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])