Documentos de Académico
Documentos de Profesional
Documentos de Cultura
# se crea metodo para entrenar los valores y se envian como parametros las
reglas y su resultado
def entrenar(self, valores_entrenados, resultados_esperados):
# self.pesos = np.zeros(valores_entrenados.shape[1] + 1)
# iteramos las epocas necesarias segun el limite
for _ in range(self.limite):
error = 0
for valor, resultado_esperado in zip(valores_entrenados,
resultados_esperados):
# Se envia el valor al metodo predecir para saber su resultado en
el vector.
prediccion = self.predecir(valor)
# Buscamos los valores sin el sesgo, y los multiplicamos por el
rango de aprendizaje para tener el entrenamiento.
self.pesos[1:] += self.rango * (resultado_esperado - prediccion) *
valor
# Ignoramos el sesgo y solo le guardamos el aprendizaje con el
rango, pero sin los valores de entrada.
self.pesos[0] += self.rango * (resultado_esperado - prediccion)
error += int(self.pesos[0] != 0)
self.errores.append(error)
return self
# Se crea metodo para predecir, y recibe como parametro los valores de entrada
def predecir(self, valores):
# se utilizan los vectores para calcular con multiplicacion si el valor es
1 o 0
calculo = np.dot(valores, self.pesos[1:]) + self.pesos[0]
# Se regresa el resultado de la operacion.
return np.where(calculo >= 0.0, 1, -1)