def train(data, target, rbf, theta_plus=0.4, theta_minus=0.1, epochs=1): # criando primeiro neuronio rbf e o adicionando na rede first_neuron = RBFNeuron(centroid=data[0], label=target[0], radius=numpy.inf) first_neuron.set_weight(1.0) rbf.get_rbf_neurons().append(first_neuron) itered = 0 # executando a quantidade de epocas desejada while itered < epochs: itered += 1 print itered # para cada padrão... for pattern, label in zip(data[1 : len(data)], target[1 : len(target)]): label_rbfneurons = rbf.get_rbf_for_label(label) if len(label_rbfneurons) > 0: exist_neuron = False # só os neuronios do label for rbf_neuron in label_rbfneurons: if rbf_neuron.output(pattern) >= theta_plus: exist_neuron = True rbf_neuron.set_weight(rbf_neuron.get_weight() + 1.0) break if not exist_neuron: DDA.__add_rbf_neuron(rbf, pattern, label, theta_minus) else: DDA.__add_rbf_neuron(rbf, pattern, label, theta_minus) max_radius = DDA.__max_radius(rbf=rbf, rbf_centroid=pattern, label=label, theta_minus=theta_minus) # atribuindo o maior raio a todos os neuronios que não forem da classe label for other_label_rbf_neuron in rbf.get_rbf_for_not_label(label): other_label_rbf_neuron.set_radius(max_radius)
def train(data, target, rbf, theta_plus=.4, theta_minus=.1, epochs=1): #criando primeiro neuronio rbf e o adicionando na rede first_neuron = RBFNeuron(centroid=data[0], label=target[0], radius=numpy.inf) first_neuron.set_weight(1.0) rbf.get_rbf_neurons().append(first_neuron) itered = 0 # executando a quantidade de epocas desejada while itered < epochs: itered += 1 print itered # para cada padrão... for pattern, label in zip(data[1:len(data)], target[1:len(target)]): label_rbfneurons = rbf.get_rbf_for_label(label) if len(label_rbfneurons) > 0 : exist_neuron = False #só os neuronios do label for rbf_neuron in label_rbfneurons: if rbf_neuron.output(pattern) >= theta_plus: exist_neuron = True rbf_neuron.set_weight(rbf_neuron.get_weight() + 1.0) break; if not exist_neuron: DDA.__add_rbf_neuron(rbf, pattern, label, theta_minus) else: DDA.__add_rbf_neuron(rbf, pattern, label, theta_minus) max_radius = DDA.__max_radius(rbf=rbf, rbf_centroid=pattern, label=label, theta_minus=theta_minus) #atribuindo o maior raio a todos os neuronios que não forem da classe label for other_label_rbf_neuron in rbf.get_rbf_for_not_label(label): other_label_rbf_neuron.set_radius(max_radius)
def __add_rbf_neuron(rbf, pattern, label, theta_minus): rbf_neuron = RBFNeuron(centroid=pattern, label=label) rbf_neuron.set_weight(1.0) max_radius = DDA.__max_radius(rbf, rbf_neuron.get_centroid(), label, theta_minus) rbf_neuron.set_radius(max_radius) rbf.get_rbf_neurons().append(rbf_neuron)