Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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=',')
Ejemplo n.º 4
0
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)):
Ejemplo n.º 5
0
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)):