Esempio n. 1
0
def testIrisReplacement(trainfile, testfile, attrfile):
    iris_train = pd.read_csv(trainfile, header=None)
    iris_test = pd.read_csv(testfile, header=None)
    iris_attr = pd.read_csv(attrfile, header=None)
    input, output, input_test, output_test = digitalize(iris_train, iris_test, iris_attr,"iris")
    input = input.astype(np.float)
    input = np.concatenate((input, output), axis=1)
    test_input = np.concatenate((input_test, output_test), axis=1)
    replaceRate = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]
    strategies = ['fitness-proportional', 'tournament', 'rank']
    cor_list = []
    strategy_list = []
    for j in range (len(strategies)):
        print ('Strategy: ' + strategies[j])
        for i10 in range(1, 10, 1):
            i = i10 / 10
            print('Replacement rate: ' + str(i))
            ga = GA(100, 6, 48, 3, i, 0.1, 1, 1, 30, strategies[j], 'iris') 
            cor, bestHypo = ga.fit(input)
            testAcc = ga.predict(bestHypo, test_input)
            print("Accuracy: " + str(testAcc) +"\n" )
            cor_list.append(testAcc)
        cor_array = np.array(cor_list)
        strategy_list.append(cor_array)
        cor_list = []
    print ('correct rate for fitness-proportional, tournament, rank strategy at vary replacement rate are')
    print (strategy_list)
Esempio n. 2
0
def testTennis(trainFile, testFile, attrFile):
    tennis_train = pd.read_csv(trainFile, sep=" ", header=None)
    tennis_test = pd.read_csv(testFile, sep=" ", header=None)
    tennis_attr = pd.read_csv(attrFile, sep=" ", header=None)
    
    input, output, input_test, output_test = digitalize(tennis_train, tennis_test, tennis_attr,"tennis")
    input = np.concatenate((input, output), axis=1) 
    test_input = np.concatenate((input_test, output_test), axis=1)
    # p, numOfRulesPerHypo, numofattr, numofoutput, r, m, fit_threshold, stopGeneration, strategy, dataType):
    ga = GA(100, 4, 10, 2, 0.3, 0.1, 1, 1, 30, 'fitness-proportional', 'tennis')
    trainAcc, bestHypo = ga.fit(input)
    print ('Training data accuracy is: ' + str(trainAcc[0])) 
    testAcc = ga.predict(bestHypo, test_input)
    print ('Test data accuracy is: ' + str(testAcc[0]))
    ga.printRules(bestHypo)
Esempio n. 3
0
def testIris(trainfile, testfile, attrfile):
    iris_train = pd.read_csv(trainfile, header=None)
    iris_test = pd.read_csv(testfile, header=None)
    iris_attr = pd.read_csv(attrfile, header=None)
    input, output, input_test, output_test = digitalize(iris_train, iris_test, iris_attr,"iris")
    input = input.astype(np.float)
    input = np.concatenate((input, output), axis=1)
    test_input = np.concatenate((input_test, output_test), axis=1)
    # p, numOfRulesPerHypo, numofattr, numofoutput, r, m, numOfChangeBitsPerRule, fit_threshold, stopGeneration, strategy, dataType): tournament fitness-proportional rank
    # ga = GA(100, 6, 28, 3, 0.4, 0.2, 1, 0.8, 100, 'rank', 'iris')
    # (6*2*4+3)*4  *4
    ga = GA(400, 6, 48, 3, 0.3, 0.1, 1, 1, 50, 'tournament', 'iris')
    correct, bestHypo = ga.fit(input)
    print ('correct rate on traning data' + str(correct))
    ga.printRules(bestHypo)
    cor = ga.predict(bestHypo, test_input)
Esempio n. 4
0
def testIrisSelection(trainfile, testfile, attrfile):
    iris_train = pd.read_csv(trainfile, header=None)
    iris_test = pd.read_csv(testfile, header=None)
    iris_attr = pd.read_csv(attrfile, header=None)
    input, output, input_test, output_test = digitalize(iris_train, iris_test, iris_attr,"iris")
    input = input.astype(np.float)
    input = np.concatenate((input, output), axis=1)
    test_input = np.concatenate((input_test, output_test), axis=1)
    # stopGen = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
    strategies = ['fitness-proportional', 'tournament', 'rank']
    cor_list = []
    strategy_list = []
    for j in range (len(strategies)):
        ga = GA(100, 6, 48, 3, 0.3, 0.1, 1, 1, 50, strategies[j], 'iris')
        print ('Strategy: ' + strategies[j]) 
        cor, bestHypo = ga.fit(input, outputGen=True)
        for i in range (len(cor)):
            cor2 = ga.predict(bestHypo[i], test_input)
            cor_list.append(cor2)
        cor_array = np.array(cor_list)
        strategy_list.append(cor_array)
        cor_list = []
    print ('correct rate for fitness-proportional, tournament, rank strategy at vary generations are')
    print (strategy_list)
Esempio n. 5
0
def demo_func(x):
    x1, x2, x3 = x
    return x1 ** 2 + (x2 - 0.05) ** 2 + x3 ** 2

from ga import GA
ga = GA(func=demo_func, lb=[-1, -10, -5], ub=[2, 10, 2], max_iter=500)
best_x, best_y = ga.fit()
import pandas as pd
import matplotlib.pyplot as plt
FitV_history = pd.DataFrame(ga.FitV_history)
fig, ax = plt.subplots(2, 1)
ax[0].plot(FitV_history.index, FitV_history.values, '.', color='red')
plt_max = FitV_history.max(axis=1)
ax[1].plot(plt_max.index, plt_max, label='max')
ax[1].plot(plt_max.index, plt_max.cummax())
plt.show()