Skip to content

Instantly share code, notes, and snippets.

@arthurcvm
Last active August 14, 2018 00:54
Show Gist options
  • Save arthurcvm/49a708f4b70b6884d1cb812ffe808b2f to your computer and use it in GitHub Desktop.
Save arthurcvm/49a708f4b70b6884d1cb812ffe808b2f to your computer and use it in GitHub Desktop.
Perceptron de 1 neurônio
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
testes = 0
for i in range(0, 4): #Ok
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
erro = 1
while(erro != 0):
erro = 0
for i in range(len(saidas)):
saidaCalculada = calculaSaida(np.asarray(entradas[i]))
if(saidaCalculada != saidas[i]):
for j in range(len(pesos)):
if(j == 3):
pesos[j] = pesos[j] + (taxaAprendizagem * (saidas[i] - saidaCalculada) * -1)
else:
pesos[j] = pesos[j]+(taxaAprendizagem*(saidas[i] - saidaCalculada)*entradas[i][j])
print('Peso ' + str(j) + ' atualizado: ' + str(pesos[j]))
erro = 1
else:
erro = 0
epoca = epoca+1 #PERGUNTAR
print(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])
def organizaTeste():
global testes
for linha in xlread('dados_teste.xlsx'):
# print(linha)
if(type(linha[0]) is float):
if(type(testes) is int):
testes = np.array([linha[1], linha[2], linha[3]])
else:
teste = np.array([linha[1], linha[2], linha[3]])
testes = np.vstack((testes, teste))
organizaDados()
organizaTeste()
print(entradas)
print(saidas)
print(testes)
treinamento()
print("Rede neural treinada")
for i in range(len(testes)):
print(calculaSaida(np.asarray(testes[i])))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment