Created
August 13, 2018 19:34
-
-
Save arthurcvm/c8a6cebc3e031275b10ed4ab5c6563eb to your computer and use it in GitHub Desktop.
Reestruturação e teste de perceptron ainda sem sucesso
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import xlrd | |
import random | |
import numpy as np | |
#https://ark4n.wordpress.com/2009/08/26/lendo-arquivos-xls-com-python/ | |
pesos = np.array([0.0, 0.0, 0.0, 0.0]) | |
taxaAprendizagem = 0.01 | |
epoca = 0 | |
entradas = 0 | |
saidas = 0 | |
for i in range(0, 4): | |
pesos[i] = random.uniform(0, 1) #Define os pesos como números aleatórios entre 0 e 1 | |
print(pesos[i]) | |
def sinal(soma): | |
if(soma >= 0): #PERGUNTAR | |
return 1 | |
return -1 | |
def calculaSaida(registro): | |
soma = 0 | |
for i in range(len(registro)): | |
soma += registro[i]*pesos[i] | |
soma += -1*pesos[3] | |
return sinal(soma) | |
def treinamento(): | |
global entradas | |
global saidas | |
global pesos | |
global epoca | |
global taxaAprendizagem | |
erroTotal = 1 | |
while(erroTotal != 0): | |
erroTotal = 0 | |
for i in range(len(saidas)): | |
saidaCalculada = calculaSaida(np.asarray(entradas[i])) | |
erro = abs(saidas[i] - saidaCalculada) | |
erroTotal += erro | |
for j in range(len(pesos)): | |
if(j < 3): | |
pesos[j] = pesos[j]+(taxaAprendizagem * erro * entradas[i][j]) | |
else: | |
pesos[j] = pesos[j] + (taxaAprendizagem * erro * -1) | |
print('Peso ' + str(j) + ' atualizado: ' + str(pesos[j])) | |
epoca = epoca+1 #PERGUNTAR | |
print("Epoca: "+str(epoca)) | |
def xlread(arq_xls): | |
""" | |
Gerador que le arquivo .xls | |
""" | |
# Abre o arquivo | |
xls = xlrd.open_workbook(arq_xls) | |
# Pega a primeira planilha do arquivo | |
plan = xls.sheets()[0] | |
# Para i de zero ao numero de linhas da planilha | |
for i in range(plan.nrows): | |
# Le os valores nas linhas da planilha | |
yield plan.row_values(i) | |
def organizaDados(): | |
global entradas | |
global saidas | |
for linha in xlread('treino_atualizado.xlsx'): | |
# print(linha) | |
if(type(linha[0]) is float): | |
if(type(entradas) is int): | |
entradas = np.array([linha[1], linha[2], linha[3]]) | |
saidas = np.array([linha[4]]) | |
else: | |
entrada = np.array([linha[1], linha[2], linha[3]]) | |
entradas = np.vstack((entradas, entrada)) | |
saidas = np.append(saidas, linha[4]) | |
organizaDados() | |
print(entradas) | |
print(saidas) | |
treinamento() | |
print("Rede neural treinada") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment