Buscar

Redes Neurais Artificiais para Análise de Sinais

Prévia do material em texto

Redes Neurais Artificiais (Adaline)
Modelo Univariado
A análise de um determinado sistema de engenharia concluiu que uma entrada sinusoidal, ao passar pelo sistema, é tranformada em outro
sinal sinusoidal com características distintas. Foi postulado um modelo de tranformação linear:
Segundo o modelo (1), a entrada seria transladada verticalmente b unidades e deformada verticalmente a um fator a, resultando em uma
senoide. A partir das amostras coletadas, utilizou-se uma Rede Neural Artificial para aproximar a função transformadora do sistema. O
modelo de aprendizado escolhido foi um neurônio Adaline com ajuste dos pesos a partir do gradiente descendente.
Coeficiente angular: 0.2427204966607497 
Coeficiente linear: 0.4232114864810441 
O modelo de aprendizado extimou a seguinte função geradora:
Conclusão
A análise visual permite concluir que a função extimada em (2) simula o comportamento da função geradora.
Modelo Multivariado
O sistema analisado neste problema tem uma entrada de três dimensões (x1, x2, x3). Cada uma dessas entradas é medida, juntamente com
a saída do sistema, em intervalos de tempo fixo. Foi observado uma relação linear entre a entrada x3 e o tempo, e não linear para as
entradas x2 e x1. Postulamos que a saída Y do sistema corresponda a uma combinação linear entre as três entradas:
A fim de aproximar a função geradora Y do sistema em análise, utilizamos o mesmo modelo de aprendizado do problema anterior,
expandido para 3 dimensões.
[[0.75834988] 
 [2.03744911] 
 [2.75639811] 
 [1.57033213]] 
O modelo de aprendizado extimou a seguinte função geradora:
Conclusão
A análise visual permite concluir que a função extimada em (4) simula o comportamento da função geradora.
Y = ax + b (1)
In [1]: """ 
Modelo de neurônio Adaline 
14/06/2021 
""" 
 
# Bibliotecas e módulos utlizados 
import numpy as np 
import random 
import matplotlib.pyplot as plt 
from numpy.core.function_base import linspace 
import json 
In [47]: # Inicializando os dados de treinamento 
with open("et1.txt", "r") as file: 
 T_train = json.load(file) 
 
with open("ex1.txt", "r") as file: 
 X_loaded = json.load(file) 
 X_train = np.array([[x, 1] for x in X_loaded]) 
 
 
with open("ey1.txt", "r") as file: 
 Y_train = json.load(file) 
In [69]: # Neurônio Adaline 
class Adaline: 
 def __init__(self): 
 self.epocas = [] 
 
 def train(self, X, Y, factor_n, tol, max_epocas, ndimension): 
 N = len(X) 
 # Inicializando vetor de pesos W. 
 w = np.random.uniform(-0.5, 0.5, (ndimension+1 , 1)) 
 
 e = tol + 1.0 
 n_epocas = 0 
 while (e > tol) and (n_epocas < max_epocas): 
 e = 0 
 index = list(range(N)) 
 random.shuffle(index) 
 for i in index: 
 erro = ( Y[i] - np.dot(X[i], w) ) 
 w = w + erro * factor_n * X[i].reshape(ndimension+1, 1) 
 e += erro[0]**2/N 
 
 self.epocas.append(e) 
 n_epocas += 1 
 
 return w 
 
 def view_erro(self): 
 epocas = list(range(len(self.epocas))) 
 plt.plot(epocas, self.epocas) 
 plt.xlabel("Épocas") 
 plt.ylabel("Erro") 
 plt.title("Erro Acumulado X Épocas") 
 plt.show() 
 
 
In [75]: def view_train(T, X, Y): 
 X = [x[0] for x in X] 
 
 plt.plot(T, X, marker="o", linestyle="-", color=(0, 0, 0.5, 0.5), linewidth=1, markersize=5, markerfacecolo
 plt.plot(T, Y, marker="o", linestyle="-", color=(0.5, 0, 0, 0.5), linewidth=1, markersize=5, markerfacecolo
 
 plt.show() 
 
# Visualizando os dados de treinamento 
ada = Adaline() 
view_train(T_train, X_train, Y_train ) 
In [76]: # Treinamento do Modelo 
result =ada.train(X_train, Y_train, 0.01, 0.01, 50, 1) 
print(f"Coeficiente angular: {result[0][0]}") 
print(f"Coeficiente linear: {result[1][0]}") 
Y = 0.243x + 0.423 (2)
In [77]: # Erro acumulado por épocas 
ada.view_erro() 
In [78]: # Inicializando dados de teste 
T_test = np.arange(0.1*np.pi, 5.97, 0.05*np.pi) 
 
# função transforamdora extimada 
g = lambda x: result[0]*x + result[1] 
 
X_test = np.sin(T_test) 
Y_test = g(X_test) 
 
In [80]: # Visualizando a saída extimada 
def view_test(T_test, T_train, Y_test, Y_train): 
 original = plt.plot(T_train, Y_train, marker="o", linestyle="-", label="Original", color="black", linewidth
 previsto = plt.plot(T_test, Y_test, marker="o", linestyle="-", label="Previsto", color=(0, 0.5, 0, 0.5), li
 plt.ylim(-1, 1) 
 plt.legend() 
 plt.show() 
 
view_test(T_test, T_train, Y_test, Y_train) 
Y = a ∗ x1 + b ∗ x2 + c ∗ x3 + d (3)
In [92]: # Módulo para ajustar curvas 
from scipy.optimize import curve_fit 
In [87]: # Inicializando os dados de treinamento 
with open("et2.txt", "r") as file: 
 T_train = json.load(file) 
 
with open("ex2.txt", "r") as file: 
 X_loaded = json.load(file) 
 X_train = np.array([x+[1] for x in X_loaded]) 
 x1 = [x[0] for x in X_loaded] 
 x2 = [x[1] for x in X_loaded] 
 x3 = [x[2] for x in X_loaded] 
 
with open("ey2.txt", "r") as file: 
 Y_train = json.load(file) 
 
In [98]: # Visualizando os dados de treinamento 
def view_train(T_train, x1, x2, x3, Y_train): 
 plt.plot(T_train, x1, marker="o", linestyle="--", label="X1", color=(0.5, 0, 0, 0.5), linewidth=1, mark
 plt.plot(T_train, x2, marker="o", linestyle="--", label="X2", color=(0, 0.5, 0, 0.5), linewidth=1, mark
 plt.plot(T_train, x3, marker="o", linestyle="--", label="X3", color=(0, 0, 0.5, 0.5), linewidth=1, mark
 plt.plot(T_train, Y_train, marker="o", linestyle="-", label="Y", color=(0.5, 0.5, 0, 0.5), linewidth=2,
 plt.legend() 
 plt.show() 
 
view_train(T_train, x1, x2, x3, Y_train) 
In [88]: # Treinamento expandido para 3 dimensões 
ada = Adaline() 
result = ada.train(X_train, Y_train, 0.01, 0.01, 50, 3) 
print(result) 
Y = 0.758x1 + 2.04x2 + 2.76x3 + 1.57 (4)
In [90]: # Erro acumulado por épocas 
ada.view_erro() 
In [95]: # Inicializando dados de teste 
T_test = np.arange(0.1*np.pi, 2.1*np.pi, 0.05*np.pi) 
 
# função transforamdora extimada 
g = lambda x1, x2, x3: result[0]*x1 + result[1]*x2 + result[2]*x3 + result[3] 
In [96]: # Modelando funções aproximadoras das entradas x1, x2, x3 
 
# Senoide para x1, x2 
def sinusoidal(x, a, b, c): 
 return a*np.sin(b*x + c) 
 
# Reta para x3 
def linear(x, a, b): 
 return a*x + b 
 
paramsx1, pcov = curve_fit(sinusoidal, T_train, x1) 
 
x1model = lambda x : paramsx1[0]*np.sin(paramsx1[1]*x + paramsx1[2]) 
 
paramsx2, pcov = curve_fit(sinusoidal, T_train, x2) 
 
x2model = lambda x : paramsx2[0]*np.sin(paramsx2[1]*x + paramsx2[2]) 
 
paramsx3, pcov = curve_fit(linear, T_train, x3) 
 
x3model = lambda x : paramsx3[0]*x + paramsx3[1] 
In [97]: # dados de teste para x1, x2, x3 
x1_test = x1model(T_test) 
x2_test = x2model(T_test) 
x3_test = x3model(T_test) 
 
# Saída extimada para os dados de teste 
Y_test = g(x1_test, x2_test, x3_test) 
In [99]: # Visualizando a saída extimada 
def view_test(T_test, T_train, Y_test, Y_train): 
 plt.plot(T_train, Y_train, marker="o", linestyle="-", label="Original", color="black", linewidth=2, mar
 plt.plot(T_test, Y_test, marker="o", linestyle="-", label="Previsto", color=(0, 0.5, 0, 0.5), linewidth
 plt.legend() 
 plt.show() 
 
view_test(T_test, T_train, Y_test, Y_train) 
	Redes Neurais Artificiais (Adaline)
{
 "cells": [
 {
 "cell_type": "markdown",
 "metadata": {},
 "source": [
 "<h1> Redes Neurais Artificiais (Adaline) </h1>"
 ]
 },
 {
 "cell_type": "markdown",
 "metadata": {},
 "source": [
 "<h3>Modelo Univariado</h3>\n",
 "<p style=\"text-align:justify\">\n",
 "A análise de um determinado sistema de engenharia concluiu que uma entrada sinusoidal, ao passar pelo sistema, \n",
 "é tranformada em outro sinal sinusoidal com características distintas. Foi postulado um modelo de tranformação linear:\n",
 " \\[\n",
 "Y = ax + b\\tag{$1$}\n",
 " \\]\n",
 " Segundo o modelo (1), a entrada seria transladada verticalmente <i>b</i> unidades e deformada verticalmente a um fator <i><b>a</b></i>, resultando em uma senoide.\n",
 " A partir das amostras coletadas, utilizou-se uma Rede Neural Artificial para aproximar a função transformadora do sistema. O modelo de aprendizado escolhido foi um neurônio Adaline com ajuste dos pesos a partir do gradiente descendente.\n",
 " \n",
 "</p>"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 1,
 "metadata": {},
 "outputs": [],
 "source": [
 "\"\"\"\n",
 "Modelo de neurônio Adaline\n",
 "14/06/2021\n",
 "\"\"\"\n",
 "\n",
 "# Bibliotecas e módulos utlizados\n",
 "import numpy as np\n",
 "import random\n",
 "import matplotlib.pyplot as plt\n",
 "from numpy.core.function_base import linspace\n",
 "import json"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 47,
 "metadata": {},
 "outputs": [],
 "source": [
 "# Inicializando os dados de treinamento\n",
 "with open(\"et1.txt\", \"r\") as file:\n",
 " T_train = json.load(file)\n",
 "\n",
 "with open(\"ex1.txt\", \"r\") as file:\n",
 " X_loaded = json.load(file)\n",
 " X_train = np.array([[x, 1] for x in X_loaded])\n",
 "\n",
 "\n",
 "with open(\"ey1.txt\", \"r\") as file:\n",
 " Y_train = json.load(file)\n"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 69,
 "metadata": {},
 "outputs": [],
 "source": [
 "# Neurônio Adaline\n",
 "class Adaline:\n",
 " def __init__(self):\n",
 " self.epocas = []\n",
 " \n",
 " def train(self, X, Y, factor_n, tol, max_epocas, ndimension):\n",
 " N = len(X)\n",
 " # Inicializando vetor de pesos W.\n",
 " w = np.random.uniform(-0.5, 0.5, (ndimension+1 , 1))\n",
 "\n",
 " e = tol + 1.0\n",
 " n_epocas = 0\n",
 " while (e > tol) and (n_epocas < max_epocas):\n",
 " e = 0\n",
 " index = list(range(N))\n",
 " random.shuffle(index)\n",
 " for i in index:\n",
 " erro = ( Y[i] - np.dot(X[i], w) )\n",
 " w = w + erro * factor_n * X[i].reshape(ndimension+1, 1)\n",
 " e += erro[0]**2/N\n",
 " \n",
 " self.epocas.append(e)\n",
 " n_epocas += 1\n",
 " \n",
 " return w\n",
 " \n",
 " def view_erro(self):\n",
 " epocas = list(range(len(self.epocas)))\n",
 " plt.plot(epocas, self.epocas)\n",
 " plt.xlabel(\"Épocas\")\n",
 " plt.ylabel(\"Erro\")\n",
 " plt.title(\"Erro Acumulado X Épocas\")\n",
 " plt.show()\n",
 " \n",
 " "
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 75,
 "metadata": {},
 "outputs": [
 {
 "data": {
 "image/png": "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\n","text/plain": [
 "<Figure size 432x288 with 1 Axes>"
 ]
 },
 "metadata": {
 "needs_background": "light"
 },
 "output_type": "display_data"
 }
 ],
 "source": [
 "def view_train(T, X, Y):\n",
 " X = [x[0] for x in X]\n",
 "\n",
 " plt.plot(T, X, marker=\"o\", linestyle=\"-\", color=(0, 0, 0.5, 0.5), linewidth=1, markersize=5, markerfacecolor= (0, 0, 0, 0), markeredgecolor= (0.2, 0.2, 0.8, 0.8))\n",
 " plt.plot(T, Y, marker=\"o\", linestyle=\"-\", color=(0.5, 0, 0, 0.5), linewidth=1, markersize=5, markerfacecolor= (0, 0, 0, 0), markeredgecolor= (0.8, 0.2, 0.2, 0.8))\n",
 "\n",
 " plt.show()\n",
 "\n",
 "# Visualizando os dados de treinamento\n",
 "ada = Adaline()\n",
 "view_train(T_train, X_train, Y_train )"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 76,
 "metadata": {},
 "outputs": [
 {
 "name": "stdout",
 "output_type": "stream",
 "text": [
 "Coeficiente angular: 0.2427204966607497\n",
 "Coeficiente linear: 0.4232114864810441\n"
 ]
 }
 ],
 "source": [
 "# Treinamento do Modelo\n",
 "result =ada.train(X_train, Y_train, 0.01, 0.01, 50, 1)\n",
 "print(f\"Coeficiente angular: {result[0][0]}\")\n",
 "print(f\"Coeficiente linear: {result[1][0]}\")"
 ]
 },
 {
 "cell_type": "markdown",
 "metadata": {},
 "source": [
 "<p style=\"text-align:justify\">\n",
 " O modelo de aprendizado extimou a seguinte função geradora:\n",
 " $$Y = 0.243x + 0.423 \\tag{$2$}$$\n",
 "</p>"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 77,
 "metadata": {},
 "outputs": [
 {
 "data": {
 "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEaCAYAAAAcz1CnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAqyUlEQVR4nO3deXxV9Z3/8dcn+0JCgIQtEAKC7CoaWepSl7GCG9Lairai1Y7Vql1mOq2206ndbKfTaW2rjj+1VlyqtXXDVrDWuuNCUJQd2QlrWEIgZM/n98c92GtIIEBuTnLv+/l43EfOfj8ngfu+53uWr7k7IiKSuJLCLkBERMKlIBARSXAKAhGRBKcgEBFJcAoCEZEEpyAQEUlwCgKRBGBml5jZuLDrkM5JQSAS58zsDODzwAfhViKdlemGMpHDE3ywPuzuA45g3WJgDZDq7g3tW5nIkdERgRyUma01s2oz2xv1uqMD3vcBM2sws/6xfq+uwsyeMLN7mk17urW/h5ndamb1zf52FR1SrHQpCgJpiwvdvVvU68aWFjKzlBamJR/um5lZNvAZYDeRJg2JuAH4jJmdCWBmlwLjgJsPss4fm/3t8jqgTuliFARyxMzsKjN7w8x+ZWY7gVuDb/L/Z2bPmVkVcKaZjTSzl82swswWm9lFh9j0Z4AK4IfAlc3es6eZ/d7MNpnZLjN7OqqW15st62Y2NBh+wMzuMrPZwTfjN8ysr5ndHmxnWfTJ1Oh1o9b/cSu/h5vNbJWZ7TGzJWY2LWpespn9wsy2m9lq4Pxm6/Y3s1lmttPMVprZv7b2S3H3LcC/A/eaWRHwG+DL7r73YL/M1gT7+FUzWx3U9z9mlhTMSzKz/zSzdWa2zcweNLPuUeueamZzg7/pBjO7Kph+vpm9Z2aVwfRbo9bJMLOHzWxHsN48M+tzJLVL+1IQyNGaAKwGegM/CaZdHgznAG8DzwJ/C5a5CXjEzIYfZJtXAo8CjwEjzOzEqHkPAVnA6GB7vzqMWj8H/CeQD9QCbwLvBuN/Bn55GNuKtgo4DegO/AB42Mz6BfP+FbiAyDf3EuCSZus+CpQB/YN5t5nZ2a29kbs/ELzfu8Acd59zhDXvNy2o60RgKnB1MP2q4HUmMAToBtwBEITQbOC3QAFwArAgWK8KmAHkEQm9683s4mDelUR+RwOBXsB1QPVR1i/twd310qvVF7AW2EvkG/r+178G864C1jdb/gHgwajx04AtQFLUtEeBW1t5vyKgCTghGH8e+HUw3C+Y16OF9a4CXm82zYGhUXXdGzXvJmBp1PhYoKKldaPW/3EwfAZQdpDf2QJgajD8D+C6qHmfCradQuQDsRHIiZr/U+CBQ/xN/jPYxjmHWO5WoK7Z3+6lZvs4OWr8K8CLwfCLwFei5g0H6oO6bwGeauO/n9uBXwXDVwNzgePC/net18dfOiKQtrjY3fOiXvdGzdvQwvLR0/oDG9y9KWraOqCwlfe6gsgH9IJg/BHgcjNLJfLBudPddx3RXsDWqOHqFsa7HclGzWyGmS0ImjsqgDFEjjIg2P+oxddFDfcnsj97ms1v7XeDmQ0DvgncBfxv8Hs5mMeb/e3ObDa/eW37T873b1brOiIh0IfI32FVK/VNMLOXzKzczHYT+da//3fxEJFgfyxo2vt5G+qXDqAgkKPV0vXH0dM2AQP3tz0HioCNrWxvBjDEzLaY2RYizTX5wBQiH1o9zSyvhfWqiDQZAWBmfdu8By3bF709oMXtmdkg4F7gRqCXR07GLgIsWGQzkQ/O/YqihjcR2Z+cZvNb/N2YmQH3EfmWfRORff52m/amdc1r2xRV26Bm8xqIhOcG4JhWtvcHYBYw0N27A3cT/C7cvd7df+Duo4BPEGkym3GU9Us7UBBIrL1N5APrW2aWapFr8C8k0v7/MWY2icgHzHgi7c4nEPl2/QfgSnffTKRt+i4z6xFs7/Rg9feB0WZ2gpllEGkWORoLiByJJJvZZOCTrSyXTST4yoN9+GJQ836PA181swFm1oOoK3zcfQORppKfBidSjwOuIXIU1JLriYTibcER1jVEfq8jjnAfAf4j+F0OBL4G/DGY/ijwDTMbbGbdgNuIXIHUENT3L2b2OTNLMbNeZnZCsF4OkaOcGjMbT+R8EQBmdqaZjbXIlWSVRJqaGo+idmknCgJpi2ft49eiP9XWFd29DriIyDf67USaNGa4+7IWFr8SeMbdF7r7lv0v4NfABWbWk0jTUT2wDNgGfD14nxVErjL6O/Ah8HoL2z8cXyMSWBVELmF9upX9WwL8L5ETz1uJnGt4I2qRe4k0h7xP5ATvk802cRlQTOQb+FPA9939hebvE3xQ3wZcE/xOo9/73uBooSWXNvvb7TWz3lHznwHmEwm+vwK/C6bfT6Qp51UiN8DVEDkKwd3XA+cRuYJpZ7Du8cF6XwF+aGZ7gP8iEoT79SVyUr4SWAq8AjzcSt3SgXRnsUiCMjMHhrn7yrBrkXDpiEBEJMEpCEREEpyahkREEpyOCEREEtwBDwnr7PLz8724uDjsMkREupT58+dvd/eCluZ1uSAoLi6mtLQ07DJERLoUM1vX2jw1DYmIJDgFgYhIglMQiIgkOAWBiEiCUxCIiCQ4BYGISIJTEIiIJLiECYJV5Xv54bNLqG9sOvTCIiIJJGGCYP2Ofdz/xhqeX7wl7FJERDqVhAmCTx5bQFHPLB6c2+rNdSIiCSlhgiApyZgxaRDvrN3Jkk2VYZcjItJpJEwQAHz2pIFkpCbx0Ftrwy5FRKTTSKgg6J6VyrRxhTz13kZ276sPuxwRkU4hoYIA4IqJxdTUN/Gn+RvCLkVEpFNIuCAY1T+X8cU9eeitdTQ1qXc2EZGECwKAKyYNYt2OfbzyYXnYpYiIhC4hg+Dc0X3pnZPOg3PXhl2KiEjoEjII0lKSuHxCES+vKGft9qqwyxERCVVMg8DMJpvZcjNbaWY3t7LMGWa2wMwWm9krsawn2uXji0g24+G3dIOZiCS2mAWBmSUDdwJTgFHAZWY2qtkyecBdwEXuPhr4bKzqaa53bgZTxvbj8dIN7Ktr6Ki3FRHpdGJ5RDAeWOnuq929DngMmNpsmcuBJ919PYC7b4thPQe4ctIgKmsaeGbBpo58WxGRTiWWQVAIRF+sXxZMi3Ys0MPMXjaz+WY2o6UNmdm1ZlZqZqXl5e13pc9Jg3owql8uM+euxV2XkopIYoplEFgL05p/2qYAJwHnA+cC3zOzYw9Yyf0edy9x95KCgoL2K9CMKz8xiGVb9jBv7a52266ISFcSyyAoAwZGjQ8AmrfBlAFz3L3K3bcDrwLHx7CmA1x0fCHdM1OZ+ebajnxbEZFOI5ZBMA8YZmaDzSwNmA7MarbMM8BpZpZiZlnABGBpDGs6QGZaMp8rGcDzi7awtbKmI99aRKRTiFkQuHsDcCPwPJEP98fdfbGZXWdm1wXLLAXmAB8A7wD3ufuiWNXUmi9MHESjO394e31Hv7WISOisq50kLSkp8dLS0nbf7tUPzGPhxt288e2zSEtJyPvsRCSOmdl8dy9paZ4+8QIzJg2ifE8tc9SVpYgkGAVB4PRhBRT3ytLzh0Qk4SgIAklJxhWTiildt4tFG3eHXY6ISIdREES55KQBZKYm89Cbev6QiCQOBUGU7pmpTDuxkKcXbKRiX13Y5YiIdAgFQTMzJg2itqGJx0vVlaWIJAYFQTMj+uYyfnCkK8tGdWUpIglAQdCCKycVs2FnNa+s6NCHoYqIhEJB0IJPje5Dn9x0Zs7VSWMRiX8KghakJifx+QmDeGVFOWvUlaWIxDkFQSumjx9IarLpUlIRiXsKglb0zsngvLH9+NP8DVTVqitLEYlfCoKDmDGpmD01DTy9YGPYpYiIxIyC4CBOLMpjTGEuD85dp64sRSRuKQgOwsyYMbGY5Vv38PaanWGXIyISEwqCQ7johP7kZaXyoLqyFJE4pSA4hIzUZC4tGcjzi7eyeXd12OWIiLQ7BUEbfGHiIJrceVRdWYpIHFIQtMHAnlmcPaI3f3hnPbUNjWGXIyLSrhQEbTRjUjHb99YxZ5G6shSR+KIgaKNTh+YzJD+bmerKUkTijIKgjSJdWQ7i3fUVLCxTV5YiEj9iGgRmNtnMlpvZSjO7uYX5Z5jZbjNbELz+K5b1HK3PnDSArLRkXUoqInElZkFgZsnAncAUYBRwmZmNamHR19z9hOD1w1jV0x5yM1KZNq6QZ97fxK4qdWUpIvEhlkcE44GV7r7a3euAx4CpMXy/DjFjUjF1DU38UV1ZikiciGUQFALRn5ZlwbTmJpnZ+2Y228xGx7CedjG8bw4Th/TkoTfVlaWIxIdYBoG1MK35J+e7wCB3Px74LfB0ixsyu9bMSs2stLy8vH2rPAJXTipmY0U1/1imrixFpOuLZRCUAQOjxgcAm6IXcPdKd98bDD8HpJpZfvMNufs97l7i7iUFBQUxLLltzhnVh37dM3TSWETiQiyDYB4wzMwGm1kaMB2YFb2AmfU1MwuGxwf17IhhTe0iJTmJz08o4rUPt7OqfG/Y5YiIHJWYBYG7NwA3As8DS4HH3X2xmV1nZtcFi10CLDKz94HfANO9izz4f/r4ItKSk9SVpYh0eSmx3HjQ3PNcs2l3Rw3fAdwRyxpiJb9bOucf148n5pfxzXOH0y09pr9KEZGY0Z3FR+GKSYPYU9vAU++pK0sR6boUBEdh3MA8xhZ258G5a9WVpYh0WQqCo2BmzJg0iA+37eXN1Z3+HLeISIsUBEfpwuP70yMrlQfn6qSxiHRNCoKjlJGazKUnF/G3JVvYWKGuLEWk61EQtIPPTygC4A9v66hARLoeBUE7GNgzi7NH9uGxdzaoK0sR6XIUBO3kyknF7Kiq47mFm8MuRUTksCgI2skpQ3sxpCCbmTppLCJdjIKgnZgZMyYOYsGGCt7fUBF2OSIibaYgaEefOWkA2WnJPKjnD4lIF6IgaEc5Gal8+sQBPPvBJnbsrQ27HBGRNlEQtLMZkwapK0sR6VIUBO1sWJ8cPnFMLx55az0NjU1hlyMickgKghiYEXRl+aK6shSRLkBBEAP/MrI3/btn8LvX1+ippCLS6SkIYiAlOYnrzziGd9bsZNb7mw69gohIiBQEMXL5hEGcMDCPHz67hIp9dWGXIyLSKgVBjCQnGbdNG0tFdT0/m70s7HJERFqlIIihUf1z+dKpg3ls3gbeWbMz7HJERFqkIIixr/3LMAb0yOSWJz/Qk0lFpFNSEMRYVloKP754DKvKq7j75dVhlyMicoCYBoGZTTaz5Wa20sxuPshyJ5tZo5ldEst6wnLG8N5ceHx/7nxpJavL94ZdjojIx8QsCMwsGbgTmAKMAi4zs1GtLPffwPOxqqUz+N4FI8lITeK7Ty3SvQUi0qnE8ohgPLDS3Ve7ex3wGDC1heVuAp4A4vo23N45Gdw8ZSRvrt7Bn+eXhV2OiMhHYhkEhUD0k9fKgmkfMbNCYBpwdwzr6DSmnzyQkkE9uO25peys0r0FItI5xDIIrIVpzdtEbge+7e4HvZzGzK41s1IzKy0vL2+v+jpcUpJx26fHsre2gR//dUnY5YiIALENgjJgYNT4AKD58xZKgMfMbC1wCXCXmV3cfEPufo+7l7h7SUFBQYzK7RjH9snhy6cfw5PvbuSNldvDLkdEJKZBMA8YZmaDzSwNmA7Mil7A3Qe7e7G7FwN/Br7i7k/HsKZO4cazhlLcK4vvPrWQmnrdWyAi4YpZELh7A3AjkauBlgKPu/tiM7vOzK6L1ft2BRmpyfxk2ljW7tjHnS+tDLscEUlwKbHcuLs/BzzXbFqLJ4bd/apY1tLZnDI0n0+PK+TuV1Zx0fH9GdYnJ+ySRCRB6c7iEH33/JFkp6dwy5MLaWrSvQUiEg4FQYh6dUvnO+eNpHTdLvVxLCKhURCE7LMnDWDikJ789LmlbNtTE3Y5IpKAFAQhMzN+Mm0sNfVN/OgvS8MuR0QSkIKgEzimoBs3nDmUZ9/fxMvL4/pJGyLSCSkIOonrzhjCMQXZfO+ZRVTX6d4CEek4CoJOIj0lmdumjWXDzmpuf3FF2OWISAJREHQiE4b04tKSgdz32hqWbKoMuxwRSRAKgk7mlvNGkJeZyneeWkij7i0QkQ6gIOhk8rLS+N4Fo1iwoYJH3l4XdjkikgDaHARmdpGZ/SJ4XRjLohLd1BP6c9qwfH4+ZzlbduveAhGJrTYFgZn9FPgasCR4fTWYJjFgZvz44jHUNzbxg2cXh12OiMS5th4RnA+c4+73u/v9wORgmsTIoF7ZfPXsYcxetIW/L9kadjkiEscO5xxBXtRw93auQ1pw7elDGN4nh/96ZhFVtQ1hlyMicaqtQXAb8J6ZPWBmM4H5wTSJodTkJG779Bg27a7hly/o3gIRiY1DBoGZJQFNwETgyeA1yd0fi3FtApw0qCefn1DE799Yw8Ky3WGXIyJx6JBB4O5NwI3uvtndZ7n7M+6+pQNqk8C3Jo+gV7d0bnnqAxoam8IuR0TiTFubhl4ws2+a2UAz67n/FdPK5CPdM1O59cLRLNpYyQNz14ZdjojEmbZ2VXl18POGqGkODGnfcqQ1543ty5nDC/jlCyuYMrYfhXmZYZckInGirecIbnb3wc1eCoEOZGb8cOoY3OH7zyzCXY+fEJH20dZzBDccajmJvYE9s/i3c47l70u3MWeRTtOISPvQOYIu5ounFDOqXy7fn7WYypr6sMsRkTjQ1iC4mshRwatE7iGYD5QeaiUzm2xmy81spZnd3ML8qWb2gZktMLNSMzv1cIpPRCnJSfz002PZvreWXzy/POxyRCQOtOlksbsPPtwNm1kycCdwDlAGzDOzWe6+JGqxF4FZ7u5mdhzwODDicN8r0Rw/MI8Zk4qZ+eZaLh5XyIlFPcIuSUS6sIMeEZjZt6KGP9ts3qHuLB4PrHT31e5eBzwGTI1ewN33+j/PemYTuRJJ2uDfP3UsfXIy+M6TC6nXvQUichQO1TQ0PWr4lmbzJh9i3UJgQ9R4WTDtY8xsmpktA/7KPy9TlUPIyUjlB1NHs2zLHn73+pqwyxGRLuxQQWCtDLc0frB19zvgG7+7P+XuI4CLgR+1uCGza4NzCKXl5eWHeNvEce7ovnxqVB9u//sKNuzcF3Y5ItJFHSoIvJXhlsabKwMGRo0PADa1+kburwLHmFl+C/PucfcSdy8pKCg4xNsmllsvGk2yGd99WvcWiMiROVQQHG9mlWa2BzguGN4/PvYQ684DhpnZYDNLI9LMNCt6ATMbamYWDJ8IpAE7jmhPElT/vEy+ee5wXl1Rzp9Ky8IuR0S6oINeNeTuyUe6YXdvMLMbgeeBZOB+d19sZtcF8+8GPgPMMLN6oBq41PW19rDNmFTMC0u28p2nFtKrWxpnj+wTdkki0oVYV/vcLSkp8dLSQ97CkHD21jZw+b1vsXzLHmZePZ6JQ3qFXZKIdCJmNt/dS1qadzg9lEkn1i09hQe+OJ6inll8aWYpH5RVhF2SiHQRCoI40jM7jYeumUBeVipX3v8OH27dE3ZJItIFKAjiTN/uGTzypQmkJCfxhd+9rctKReSQFARxaFCvbB6+ZgI19U184Xdvs62yJuySRKQTUxDEqeF9c3jgiydTvqeWK373DhX76sIuSUQ6KQVBHBtX1IN7Z5SwZnsVV/1+HlW1DWGXJCKdkIIgzp0yNJ/fXj6OhRt3c+1DpdTUN4Zdkoh0MgqCBHDu6L78/DPH8cbKHXz10fdo0NNKRSSKgiBBfOakAdx64Sj+tmQr335iIU1NXetGQhGJnTZ1TCPx4apTBlNZ08AvX1hBTkYK379wFMGjnkQkgSkIEsxNZw2lsrqe+15fQ/fMVL5xzrFhlyQiIVMQJBgz47vnj6Sypp5fv/ghuZmpXHPqYfdEKiJxREGQgMyMn376OPbWNvCjvywhJyOFz5UMPPSKIhKXFAQJKjnJ+NWlJ7CnppSbn/iAnPQUpoztF3ZZIhICXTWUwNJTkvl/V5zEuKIefPWx93h1hboBFUlECoIEl5WWwv1XnczQ3jl8+aH5zF+3M+ySRKSDKQiE7pmpPHj1ePp2z+CLv5/Hkk2VYZckIh1IQSAAFOSk89A148lOT2HG/W+zZntV2CWJSAdREMhHBvTI4qFrJtDk8IX73mbz7uqwSxKRDqAgkI8Z2rsbD149nsrqer5w39vs2FsbdkkiEmMKAjnAmMLu/O6qkynbVc2Vv3+Hypr6sEsSkRhSEEiLxg/uyd1XnMSyzXv40gOlVNfp8dUi8UpBIK06c3hvfnXpCcxbt5OvPDKfugY9vlokHsU0CMxsspktN7OVZnZzC/M/b2YfBK+5ZnZ8LOuRw3fh8f25bdpYXlpezr89voBGPb5aJO7E7BETZpYM3AmcA5QB88xslrsviVpsDfBJd99lZlOAe4AJsapJjsxl44uorK7np7OXkZORym3Txujx1SJxJJbPGhoPrHT31QBm9hgwFfgoCNx9btTybwEDYliPHIUvf/IYKmvqufOlVXTPTOXmKSPCLklE2kksg6AQ2BA1XsbBv+1fA8xuaYaZXQtcC1BUVNRe9clh+uanhlNZ3cDdr6wiNzOFr5wxNOySRKQdxDIIWmo7aLGB2czOJBIEp7Y0393vIdJsRElJiRqpQ2Jm/OCi0VTW1PPzOcvZsHMf37tgFFlpeoitSFcWy//BZUD0Q+4HAJuaL2RmxwH3AVPcfUcM65F2kJRk/OKzx9M/L5O7X1nF22t28pvp4xhT2D3s0kTkCMXyqqF5wDAzG2xmacB0YFb0AmZWBDwJXOHuK2JYi7Sj1OQkvj15BI9cM4Gq2gam3fUG9766miZdUSTSJcUsCNy9AbgReB5YCjzu7ovN7Dozuy5Y7L+AXsBdZrbAzEpjVY+0v08MzWfO107nzOG9+clzS7ny9++wrbIm7LJE5DCZe9f6FldSUuKlpcqLzsTdefSdDfzwL4vJSkvhfy45jrNH9gm7LBGJYmbz3b2kpXm6s1iOmplx+YQi/nLTqfTJzeCamaV8/5lF1NTrsRQiXYGCQNrN0N45PH3DJ7jm1MHMfHMdU+94g+Vb9oRdlogcgoJA2lV6SjLfu2AUD3zxZHZU1XHhHa8zc+5auloTpEgiURBITJwxvDdzvn4apxzTi+/PWsyXZpaqbwORTkpBIDGT3y2d+686mVsvHMVrK7cz+dev8eqK8rDLEpFmFAQSU2bGVacM5pkbTiEvM5UZ97/Dj/+yhNoGnUgW6SwUBNIhRvbL5dmbTuWKiYO47/U1TLtzLiu37Q27LBFBQSAdKCM1mR9dPIZ7Z5SweXc1F/z2NR59Z71OJIuETEEgHe6cUX2Y8/XTKRnUk1ueXMj1D79Lxb66sMsSSVgKAglFn9wMHrx6PN85bwQvLtvK5Ntf481VeuagSBgUBBKapCTj2tOP4cnrTyErLZnL73uLn89ZRn2j+kYW6UgKAgnd2AHdefamU/ncSQO56+VVXHL3m6zdXhV2WSIJQ0EgnUJ2egr/fclx3PX5E1lTvpfzf/MaT8wv04lkkQ6gIJBO5byx/Zjz9dMZXdidf//T+3ztsQVU1tSHXZZIXFMQSKfTPy+TR/91It/81LH8deFmptz+Gm+t1olkkVhREEinlJxk3HjWMP503SSSkmD6PW9x+b1vMXfVdjUXibQzBYF0aicW9eD5r5/Of54/kg+37eXye9/mkrvf5KVl2xQIIu1EPZRJl1FT38if5pdx98ur2FhRzej+udx45lDOHd2XpCQLuzyRTu1gPZQpCKTLqW9s4qn3NvJ/L69izfYqhvXuxg1nDuWC4/qRkqyDXJGWKAgkLjU2OX9duJk7/7GS5Vv3UNQzi+vPOIZPn1hIekpy2OWJdCoKAolrTU3O35du5c6XVvJ+2W76dc/gy6cPYfr4IjJSFQgioCCQBOHuvPbhdu54aSXvrNlJfrc0vnTaEL4wcRDd0lPCLk8kVAcLgpg2qJrZZDNbbmYrzezmFuaPMLM3zazWzL4Zy1ok/pkZpx9bwONfnsQfr53IyH65/Gz2Mk752T+4/e8r9IRTkVbE7IjAzJKBFcA5QBkwD7jM3ZdELdMbGARcDOxy918cars6IpDD8f6GCu54aSUvLNlKdloyV0wq5kunDSa/W3rYpYl0qLCOCMYDK919tbvXAY8BU6MXcPdt7j4P0DMEJCaOH5jHvTNKmPP10zhrZB/ueXUVp/73P7h11mI2764OuzyRTiGWQVAIbIgaLwumiXS4EX1z+e1l4/j7v32SC4/rz8NvreP0n7/ELU9+wPod+8IuTyRUsQyClu7wOaJ2KDO71sxKzay0vLz8KMuSRDakoBv/89njefk/zmD6yUU88e5Gzvzfl/nGHxfw4dY9YZcnEopYBkEZMDBqfACw6Ug25O73uHuJu5cUFBS0S3GS2Ab0yOJHF4/h9W+dydWnFDNn0RY+dfurXP/wfBZt3B12eSIdKpbX1M0DhpnZYGAjMB24PIbvJ3LYeudm8N3zR3H9GUO5//U1zJy7ltmLtjCuKI8pY/oyZUw/BvbMCrtMkZiK6X0EZnYecDuQDNzv7j8xs+sA3P1uM+sLlAK5QBOwFxjl7pWtbVNXDUks7a6u59F31vOXDzaxaGPkn+GYwlymjOnHlDF9GVLQLeQKRY6MbigTOQLrd+xjzuLNzF60hffWVwAwvE8Ok8f05byx/Ti2TzfM9LA76RoUBCJHafPuauYs2sLsRVuYt3Yn7jAkP5vJQfPRmMJchYJ0agoCkXa0bU8Nf1u8lTmLtvDm6h00NjkDemQyZUxfJo/px7iBeXostnQ6CgKRGNlVVccLS7Yye9FmXl+5nfpGp29uBpPH9GXymL6cXNyTZIWCdAIKApEOsLu6nn8s28rshVt4ZUU5tQ1N5HdL41Oj+zJlTF8mDulFqvpLkJAoCEQ6WFVtAy8t38bsRVt4adk29tU1kpeVyjkj+zBlbF9OGZqvPhOkQykIREJUU9/IKyvKmbNoC39fupU9NQ3kpKdw9sjeTB7TjzOGF6jfBIm5gwWBHtIuEmMZqcmcO7ov547uS11DE2+s2s7shZv525KtPL1gExmpSRxXmMe4ojzGFfXgxKI8eudmhF22JBAdEYiEpKGxibfX7OTFpdt4d/0uFm/aTX1j5P9jYV4mJxTlcWJRD8YV5TG6f66akuSo6IhApBNKSU7ilKH5nDI0H4g0IS3ZXMl76yt4d/0uFqyv4K8fbAYgLTmJ0YW5jBvYIzhyyKMwL1P3Lki70BGBSCe2tbKG99ZX8N6GXby3roIPNlZQU98EQO+c9I+ak8YNzOO4AXlkpumoQVqmIwKRLqpP1D0JAPWNTSzfsof31u/i3fUVvLd+F88v3gpAcpIxsl/OR0cNJxb1YFCvLB01yCHpiECki9tZVceCDbs+alJ6f8Nu9tY2ANAjK/WjE9Djinpw3IDu5GSkhlyxhEFHBCJxrGd2GmeN6MNZI/oA0NjkrNy2NzhqiATEP5ZtA8AMBvfKZkhBNoPzsxmc343B+ZHx3jnpOnpIUAoCkTiTnGQM75vD8L45TB9fBETuev6grIJ311WwbEsla7ZX8dqH26ltaPpovay05CAcshmSn83ggiAoemXTPUtHEfFMQSCSALpnpnLasAJOG/bPHv6ampzNlTWsKa9izfa9rN5exZrtVSzauJvZi7bQ2PTPZuNe2WkU52cfEBTFvbJ1M1wcUBCIJKikJKMwL5PCvExOHZb/sXl1DU1s2LUvCImqICT28tqH5fx5ftnHli3My/woIAYHATEkP5vCvExS9GylLkFBICIHSEtJ4piCbhzTQo9se2sbWBscPex/rd5exdMLNrKnpuGj5VKTjYE9syjMy6R3TgZ9ctPpkxv5WZCz/2e6bpTrBBQEInJYuqWnMKawO2MKu39suruzs6ou6giiijXlVWyurGHltu2U76mloenAqxR7ZKXSJzeD3rkZ9MlJp3cQGPvDo3duBgXd0klL0dFFrCgIRKRdmBm9uqXTq1s6JcU9D5jf1OTs3FfH1soatlXWsm1PDVsrayPje2rZVlnDii17KN9b+7HzE/v1yk6jIOefRxWRsIgExf7hgpx0Per7CCgIRKRDJCUZ+d3Sye+Wzuj+rS/X2BQ5sogERCQstlXWsnVPDdsqI+PLtlRSvqeWFvKCnPQUcjNTyctKpXtm5JWXlRqZlpn20fj+efvHu6WnJOzlswoCEelUkpOMguDbPXRvdbnGJmfH3tpIUOwPjD017K6uZ/e+enZX11NRXc+H2/ZSsa+eyup66hqbWt1ecpJ9LBxaCozItH+GSU5GCtnpKWSlJnfpE+MKAhHpkpKTjN7BuYWDBcZ+7k5NfRMV1XWRkAjC4p+hEZm+u7qBin11VOyrY+2OqmBaPYd6CENaShLZaclkpaWQnd7sZ1oyWekpB8zPamH57GB6dnoK6SlJHXKUEtMgMLPJwK+BZOA+d/9Zs/kWzD8P2Adc5e7vxrImEUlMZkZmWjKZaZn06555WOs2NTl7ahs+Co39wVFZ3cC+ugb21TUGrwaqaoOfdY3sq21gZ1X1x6bvq2ts8/smGZFgCALi8glFfOm0IYe764cUsyAws2TgTuAcoAyYZ2az3H1J1GJTgGHBawLwf8FPEZFOIymq2ehoNTU51fWNVNU1UF3XeEBwVDUPlKj5+d3S22FvDhTLI4LxwEp3Xw1gZo8BU4HoIJgKPOiRJ9+9ZWZ5ZtbP3TfHsC4RkdAkJRnZ6ZFzC51FLM9uFAIbosbLgmmHu4yIiMRQLIOgpTMczU+3tGUZzOxaMys1s9Ly8vJ2KU5ERCJiGQRlwMCo8QHApiNYBne/x91L3L2koKCg+WwRETkKsQyCecAwMxtsZmnAdGBWs2VmATMsYiKwW+cHREQ6VszOVrh7g5ndCDxP5PLR+919sZldF8y/G3iOyKWjK4lcPvrFWNUjIiIti+lpa3d/jsiHffS0u6OGHbghljWIiMjBdd17okVEpF0oCEREEpz5oR6g0cmYWTmw7ghXzwe2t2M5nU0875/2reuK5/3rSvs2yN1bvOyyywXB0TCzUncvCbuOWInn/dO+dV3xvH/xsm9qGhIRSXAKAhGRBJdoQXBP2AXEWDzvn/at64rn/YuLfUuocwQiInKgRDsiEBGRZhImCMxsspktN7OVZnZz2PW0FzMbaGYvmdlSM1tsZl8Lu6b2ZmbJZvaemf0l7FraW9AHx5/NbFnwN5wUdk3txcy+EfybXGRmj5pZRtg1HQ0zu9/MtpnZoqhpPc3sBTP7MPjZI8waj1RCBEFUb2lTgFHAZWY2Ktyq2k0D8O/uPhKYCNwQR/u239eApWEXESO/Bua4+wjgeOJkP82sEPgqUOLuY4g8b2x6uFUdtQeAyc2m3Qy86O7DgBeD8S4nIYKAqN7S3L0O2N9bWpfn7pv39/Ps7nuIfJDETec+ZjYAOB+4L+xa2puZ5QKnA78DcPc6d68Itaj2lQJkmlkKkEULj5jvStz9VWBns8lTgZnB8Ezg4o6sqb0kShAkRE9oZlYMjAPeDrmU9nQ78C2gKeQ6YmEIUA78Pmj6us/MssMuqj24+0bgF8B6YDORR8z/LdyqYqLP/kfnBz97h1zPEUmUIGhTT2hdmZl1A54Avu7ulWHX0x7M7AJgm7vPD7uWGEkBTgT+z93HAVV00aaF5oK28qnAYKA/kG1mXwi3KmlNogRBm3pC66rMLJVICDzi7k+GXU87OgW4yMzWEmnOO8vMHg63pHZVBpS5+/4juD8TCYZ48C/AGncvd/d64EngEyHXFAtbzawfQPBzW8j1HJFECYK29JbWJZmZEWljXuruvwy7nvbk7re4+wB3LybyN/uHu8fNt0p33wJsMLPhwaSzgSUhltSe1gMTzSwr+Dd6NnFyIryZWcCVwfCVwDMh1nLEYtoxTWfRWm9pIZfVXk4BrgAWmtmCYNp3gk6BpPO7CXgk+IKymjjppc/d3zazPwPvErmy7T26+F24ZvYocAaQb2ZlwPeBnwGPm9k1RMLvs+FVeOR0Z7GISIJLlKYhERFphYJARCTBKQhERBKcgkBEJMEpCEREEpyCQCSKmSWZ2fNmVhR2LSIdRZePikQxs2OAAe7+Sti1iHQUBYFIwMwagYVRkx5z95+FVY9IR1EQiATMbK+7dwu7DpGOpnMEIodgZmvN7L/N7J3gNTSYPsjMXjSzD4KfRcH0Pmb2lJm9H7w+EUx/2szmB712XRtMSzazB4JevBaa2TfC21NJVAnxrCGRNsqMel4TwE/d/Y/BcKW7jzezGUT6SLgAuAN40N1nmtnVwG+IdEzyG+AVd58W9I63/yjjanffaWaZwDwzewIoBgqDXrwws7xY7qBIS9Q0JBJorWkoeAz2We6+Onjk9xZ372Vm24F+7l4fTN/s7vlmVk7khHNts+3cCkwLRouBc4HlQCnwHPBX4G/uHo+d8EgnpqYhkbbxVoZbW+ZjzOwMIs/on+TuxxN5GmeGu+8i0lfxy8ANxGGXnNL5KQhE2ubSqJ9vBsNz+WeH7J8HXg+GXwSuh4/OAeQC3YFd7r7PzEYAE4P5+UCSuz8BfI/46ZhGuhA1DYkEWrh8dI673xw0Df0eOI/Il6fL3H1l0Ef0/UA+kb6Hv+ju682sD5Fn7w8BGomEwrvA00T6yl4OFAC3AruCbe//UnaLu8+O3V6KHEhBIHIIQRCUuPv2sGsRiQU1DYmIJDgdEYiIJDgdEYiIJDgFgYhIglMQiIgkOAWBiEiCUxCIiCQ4BYGISIL7/0UoC7uo2tLKAAAAAElFTkSuQmCC\n","text/plain": [
 "<Figure size 432x288 with 1 Axes>"
 ]
 },
 "metadata": {
 "needs_background": "light"
 },
 "output_type": "display_data"
 }
 ],
 "source": [
 "# Erro acumulado por épocas\n",
 "ada.view_erro()"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 78,
 "metadata": {},
 "outputs": [],
 "source": [
 "# Inicializando dados de teste\n",
 "T_test = np.arange(0.1*np.pi, 5.97, 0.05*np.pi)\n",
 "\n",
 "# função transforamdora extimada\n",
 "g = lambda x: result[0]*x + result[1]\n",
 "\n",
 "X_test = np.sin(T_test)\n",
 "Y_test = g(X_test)\n",
 " "
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 80,
 "metadata": {},
 "outputs": [
 {
 "data": {
 "image/png": "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\n","text/plain": [
 "<Figure size 432x288 with 1 Axes>"
 ]
 },
 "metadata": {
 "needs_background": "light"
 },
 "output_type": "display_data"
 }
 ],
 "source": [
 "# Visualizando a saída extimada\n",
 "def view_test(T_test, T_train, Y_test, Y_train):\n",
 " original = plt.plot(T_train, Y_train, marker=\"o\", linestyle=\"-\", label=\"Original\", color=\"black\", linewidth=2, markersize=5, markerfacecolor= (0, 0, 0, 0), markeredgecolor= (1, 1, 1, 0.8))\n",
 " previsto = plt.plot(T_test, Y_test, marker=\"o\", linestyle=\"-\", label=\"Previsto\", color=(0, 0.5, 0, 0.5), linewidth=2, markersize=5, markerfacecolor= (0, 0, 0, 0), markeredgecolor= (0, 0.5, 0, 0.8))\n",
 " plt.ylim(-1, 1)\n",
 " plt.legend()\n",
 " plt.show()\n",
 " \n",
 "view_test(T_test, T_train, Y_test, Y_train)"
 ]
 },
 {
 "cell_type": "markdown",
 "metadata": {},
 "source": [
 "<h5> Conclusão </h5>\n",
 "<p style=\"text-align:justify\"> A análise visual permite concluir que a função extimada em (2) simula o comportamento da função geradora.</p>"
 ]
 },
 {
 "cell_type": "markdown",
 "metadata": {},
 "source": [
 "<h3>Modelo Multivariado</h3>\n",
 "<p style=\"text-align:justify\">\n",
 " O sistema analisado neste problema tem uma entrada de três dimensões (x1, x2, x3). Cada uma dessas entradas é medida, juntamente com a saída do sistema, em intervalos de tempo fixo. Foi observado uma relação linear entre a entrada x3 e o tempo, e não linear para as entradas x2 e x1. Postulamos que a saída Y do sistema corresponda a uma combinação linear entre as três entradas:\n",
 " \\[\n",
 "Y = a*x1 + b*x2 + c*x3 + d \\tag{$3$}\n",
 " \\]\n",
 " A fim de aproximar a função geradora Y do sistema em análise, utilizamos o mesmo modelo de aprendizado do problema anterior, expandido para 3 dimensões. \n",
 " \n",
 "</p>"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 92,
 "metadata": {},
 "outputs": [],
 "source": [
 "# Módulo para ajustar curvas\n",
 "from scipy.optimize import curve_fit"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 87,
 "metadata": {},
 "outputs": [],
 "source": [
 "# Inicializando os dados de treinamento\n",
 "with open(\"et2.txt\", \"r\") as file:\n",
 " T_train = json.load(file)\n",
 " \n",
 "with open(\"ex2.txt\", \"r\") as file:\n",
 " X_loaded = json.load(file)\n",
 " X_train = np.array([x+[1] for x in X_loaded])\n",
 " x1 = [x[0] for x in X_loaded]\n",
 " x2 = [x[1] for x in X_loaded]\n",
 " x3 = [x[2] for x in X_loaded]\n",
 "\n",
 "with open(\"ey2.txt\", \"r\") as file:\n",
 " Y_train = json.load(file)\n",
 " "
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 98,
 "metadata": {},
 "outputs": [
 {
 "data": {
 "image/png": "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\n","text/plain": [
 "<Figure size 432x288 with 1 Axes>"
 ]
 },
 "metadata": {
 "needs_background": "light"
 },
 "output_type": "display_data"
 }
 ],
 "source": [
 "# Visualizando os dados de treinamento\n",
 "def view_train(T_train, x1, x2, x3, Y_train):\n",
 " plt.plot(T_train, x1, marker=\"o\", linestyle=\"--\", label=\"X1\", color=(0.5, 0, 0, 0.5), linewidth=1, markersize=3, markerfacecolor= (0, 0, 0, 0), markeredgecolor= (0.5, 0, 0, 0.5))\n",
 " plt.plot(T_train, x2, marker=\"o\", linestyle=\"--\", label=\"X2\", color=(0, 0.5, 0, 0.5), linewidth=1, markersize=3, markerfacecolor= (0, 0, 0, 0), markeredgecolor= (0, 0.5, 0, 0.5))\n",
 " plt.plot(T_train, x3, marker=\"o\", linestyle=\"--\", label=\"X3\", color=(0, 0, 0.5, 0.5), linewidth=1, markersize=3, markerfacecolor= (0, 0, 0, 0), markeredgecolor= (0, 0, 0.5, 0.5))\n",
 " plt.plot(T_train, Y_train, marker=\"o\", linestyle=\"-\", label=\"Y\", color=(0.5, 0.5, 0, 0.5), linewidth=2, markersize=5, markerfacecolor= (1, 0, 0, 1), markeredgecolor= (0.5, 0.5, 0, 0.8))\n",
 " plt.legend()\n",
 " plt.show()\n",
 " \n",
 "view_train(T_train, x1, x2, x3, Y_train)"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 88,
 "metadata": {},
 "outputs": [
 {
 "name": "stdout",
 "output_type": "stream",
 "text": [
 "[[0.75834988]\n",
 " [2.03744911]\n",
 " [2.75639811]\n",
 " [1.57033213]]\n"
 ]
 }
 ],
 "source": [
 "# Treinamento expandido para 3 dimensões\n",
 "ada = Adaline()\n",
 "result = ada.train(X_train, Y_train, 0.01, 0.01, 50, 3)\n",
 "print(result)"
 ]
 },
 {
 "cell_type": "markdown",
 "metadata": {},
 "source": [
 "<p style=\"text-align:justify\">\n",
 " O modelo de aprendizado extimou a seguinte função geradora:\n",
 " $$Y = 0.758x1 + 2.04x2 + 2.76x3 + 1.57 \\tag{$4$}$$\n",
 "</p>"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 90,
 "metadata": {},
 "outputs": [
 {
 "data": {
 "image/png": "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\n","text/plain": [
 "<Figure size 432x288 with 1 Axes>"
 ]
 },
 "metadata": {
 "needs_background": "light"
 },
 "output_type": "display_data"
 }
 ],
 "source": [
 "# Erro acumulado por épocas\n",
 "ada.view_erro()"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 95,
 "metadata": {},
 "outputs": [],
 "source": [
 "# Inicializando dados de teste\n",
 "T_test = np.arange(0.1*np.pi, 2.1*np.pi, 0.05*np.pi)\n",
 "\n",
 "# função transforamdora extimada\n",
 "g = lambda x1, x2, x3: result[0]*x1 + result[1]*x2 + result[2]*x3 + result[3]"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 96,
 "metadata": {},
 "outputs": [],
 "source": [
 "# Modelando funções aproximadoras das entradas x1, x2, x3\n",
 "\n",
 "# Senoide para x1, x2\n",
 "def sinusoidal(x, a, b, c):\n",
 " return a*np.sin(b*x + c)\n",
 " \n",
 "# Reta para x3\n",
 "def linear(x, a, b):\n",
 " return a*x + b\n",
 "\n",
 "paramsx1, pcov = curve_fit(sinusoidal, T_train, x1)\n",
 "\n",
 "x1model = lambda x : paramsx1[0]*np.sin(paramsx1[1]*x + paramsx1[2])\n",
 "\n",
 "paramsx2, pcov = curve_fit(sinusoidal, T_train, x2)\n",
 "\n",
 "x2model = lambda x : paramsx2[0]*np.sin(paramsx2[1]*x + paramsx2[2])\n",
 "\n",
 "paramsx3, pcov = curve_fit(linear, T_train, x3)\n",
 "\n",
 "x3model = lambda x : paramsx3[0]*x + paramsx3[1]\n"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 97,
 "metadata": {},
 "outputs": [],
 "source": [
 "# dados de teste para x1, x2, x3\n",
 "x1_test = x1model(T_test)\n",
 "x2_test = x2model(T_test)\n",
 "x3_test = x3model(T_test)\n",
 "\n",
 "# Saída extimada para os dados de teste\n",
 "Y_test = g(x1_test, x2_test, x3_test)"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 99,
 "metadata": {},
 "outputs": [
 {
 "data": {
 "image/png": "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\n","text/plain": [
 "<Figure size 432x288 with 1 Axes>"
 ]
 },
 "metadata": {
 "needs_background": "light"
 },
 "output_type": "display_data"
 }
 ],
 "source": [
 "# Visualizando a saída extimada\n",
 "def view_test(T_test, T_train, Y_test, Y_train):\n",
 " plt.plot(T_train, Y_train, marker=\"o\", linestyle=\"-\", label=\"Original\", color=\"black\", linewidth=2, markersize=5, markerfacecolor= (0, 0, 0, 0), markeredgecolor= (1, 1, 1, 0.8))\n",
 " plt.plot(T_test, Y_test, marker=\"o\", linestyle=\"-\", label=\"Previsto\", color=(0, 0.5, 0, 0.5), linewidth=2, markersize=5, markerfacecolor= (0, 0, 0, 0), markeredgecolor= (0, 0.5, 0, 0.8))\n",
 " plt.legend()\n",
 " plt.show()\n",
 " \n",
 "view_test(T_test, T_train, Y_test, Y_train)"
 ]
 },
 {
 "cell_type": "markdown",
 "metadata": {},
 "source": [
 "<h5> Conclusão </h5>\n",
 "<p style=\"text-align:justify\"> A análise visual permite concluir que a função extimada em (4) simula o comportamento da função geradora.</p>"
 ]
 }
 ],
 "metadata": {
 "kernelspec": {
 "display_name": "Python 3",
 "language": "python",
 "name": "python3"
 },
 "language_info": {
 "codemirror_mode": {
 "name": "ipython",
 "version": 3
 },
 "file_extension": ".py",
 "mimetype": "text/x-python",
 "name": "python",
 "nbconvert_exporter": "python",
 "pygments_lexer": "ipython3",
 "version": "3.8.5"
 }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}

Continue navegando