Impresión del resultado de la evaluación

Por último debemos ejecutar nuestro código las "epochs" adecuadas. En este caso hay que comprobar si es necesario calcular la exactitud de la predicción o no tras cada una. En caso positivo calculamos la predicción sobre el dataframe x_test y la exactitud asociada (dividiendo el número de valores correctos entre el total):

for epoch in range(self.epochs):
    if self.shuffle:
        np.random.shuffle(training_data)
    mini_batches = [training_data[start:start + self.batch_size]
                    for start in range(0, n, self.batch_size)]
    for mini_batch in mini_batches:
        self.__update_parameters(mini_batch)
        
    if self.validation_split:
        prediction = self.predict(x_test)
        accuracy = sum(int(p == y) for (p, y) in zip(prediction, y_test)) / len(x_test)
        print("Epoch {} complete. Accuracy: {:.4f}".format(epoch, accuracy))
    else:
        print("Epoch {} complete".format(epoch))