def de(kl, interval, pops, generation, num_inputx, num_hiddenx, num_outputx, data_learning): global num_hidden global num_input global num_output global inps format = data_learning[-4:-1] + data_learning[-1] if format == ".dat": inps = loader.loadDat(data_learning) elif format == ".csv": inps = loader.loadCsv(data_learning) inps = loader.stringifyVar(inps, loader.normalizeVar(loader.getVar(inps))) num_hidden = num_hiddenx num_input = num_inputx num_output = num_outputx pop = initPop(pops, kl, interval) n = 0 best1 = fitnessRanking(pop, pops)[0] best2 = list(best1) while n <= generation: best1 = fitnessRanking(pop, pops)[0] mut = mutation(pop, best1[1], best2[1], pop[best1[0]]) off = [crossOver((mut, pop[i]), best1[1], best2[1], kl) for i in xrange(pops)] for i in xrange(pops): if fitness(off[i]) > fitness(pop[i]): pop[i] = off[i] best2 = best1 print n, (1 / best2[1]) - 0.0001 n += 1 ret = pop[fitnessRanking(pop, pops)[0][0]] return ret
import numpy as np import math import ann import loader import operator from itertools import imap,starmap,izip # inps = loader.load('paru.xlsx') # inps = loader.stringifyVar(inps,loader.normalizeVar(loader.getVar(inps))) inps = loader.loadDat('titanic.dat') def fitness(kr): return 1/(ann.mse(inps,kr)+0.1) def initKromosom(kl,interval): return [(np.random.uniform()*(2*interval))-interval for i in xrange(kl)] def initPop(pops,kl,interval): return np.array([initKromosom(kl,interval) for i in xrange(pops)]) def fitnessRanking(pop,pops): return sorted([(i,fitness(pop[i])) for i in xrange(pops)], key=lambda x: x[1], reverse=True) def selectParent(pop): rang = range(len(pop)) par = [] for i in xrange(2): x = int(math.floor(np.random.uniform()*len(rang))) par.append(rang[x]) del rang[x] return par
import loader import jst import de import sys import numpy as np num_input = int(sys.argv[1]) num_hidden = int(sys.argv[2]) num_output = int(sys.argv[3]) weight_interval = int(sys.argv[4]) pop_size = int(sys.argv[5]) gen_limit = int(sys.argv[6]) data_learning = sys.argv[7] format = data_learning[-4:-1]+data_learning[-1] save_weights_to = sys.argv[8] if (format == '.dat'): inps = loader.loadDat(data_learning) elif (format == '.csv'): inps = loader.loadCsv(data_learning) inps = loader.stringifyVar(inps,loader.normalizeVar(loader.getVar(inps))) weights = de.de((num_output*num_hidden)+(num_hidden*num_input),weight_interval,pop_size,gen_limit,num_input,num_hidden,num_output,data_learning) np.savetxt(save_weights_to, np.array(weights), delimiter=',')
import sys import numpy as np num_input = 3 num_hidden = int(sys.argv[1]) num_output = 2 weight_interval = int(sys.argv[2]) pop_size = int(sys.argv[3]) gen_limit = int(sys.argv[4]) data_learning = sys.argv[5] data_testing = sys.argv[6] # print sys.argv[1] inps = loader.loadDat(data_testing) # inps = loader.stringifyVar(inps,loader.normalizeVar(loader.getVar(inps))) start = time.time() weights = de.de((num_output*num_hidden)+(num_hidden*num_input),weight_interval,pop_size,gen_limit,num_hidden,data_learning) np.savetxt('weights.csv', np.array(weights), delimiter=',') weights = jst.decodeWeights(weights) end = time.time() print end - start match = 0 for i in range(len(inps)):
import jst import de import time import sys import numpy as np num_input = int(sys.argv[1]) num_hidden = int(sys.argv[2]) num_output = int(sys.argv[3]) file_data_testing = (sys.argv[4]) file_weights = (sys.argv[5]) format = file_data_testing[-4:-1]+file_data_testing[-1] if (format == '.dat'): inps = loader.loadDat(file_data_testing) elif (format == '.csv'): inps = loader.loadCsv(file_data_testing) inps = loader.stringifyVar(inps,loader.normalizeVar(loader.getVar(inps))) weights = jst.decodeWeights(loader.loadCsv(file_weights),num_input,num_hidden,num_output) match = 0 tp1 = 0 pp1 = 0 tn1 = 0 pn1 = 0 for i in range(len(inps)): if(jst.correct(inps[i],weights)): match += 1 if(jst.truePositive1(inps[i],weights)):