Você está na página 1de 4

perceptron_ou

November 5, 2018

1 1. Perceptron
Aplicação da rede neural perceptron para a porta lógica OU. #### por Jorge Zavaleta -
zavaleta.jorge@gmail.com

1.1 1.1 Importando as bibliotecas


In [1]: # importa tratemento de matrizes
import numpy as np
# importa biblioteca gráfica
import matplotlib.pyplot as plt
# importa o modelo perceptron como p
from sklearn.linear_model import perceptron as p
#

1.2 1.2 Entradas


In [2]: # Entradas x1 e x2
X = np.array([
[0, 0],
[0, 1],
[1, 0],
[1, 1]
])

1.3 1.3 Saídas


In [3]: # saida y
y = np.array([0, 1, 1, 1])
#

1.4 1.4 Gerando o gráfico inicial


In [4]: # gerando o gráfico
colormap = np.array(['r','k'])
plt.scatter(X.T[0], X.T[1],c=colormap[y],s=400)
plt.xlabel('Perceptron OU')

1
plt.ylabel('Class e 0 e Classe 1')
plt.title('Porta Lógica OU')
plt.show()
#

1.5 1.5 Criando o modelo do Perceptron


In [5]: #
net = p.Perceptron(max_iter=100, verbose=0, random_state=None, fit_intercept=True, eta0
# treina o modelo
net.fit(X,y)
#

Out[5]: Perceptron(alpha=0.0001, class_weight=None, eta0=0.002, fit_intercept=True,


max_iter=100, n_iter=None, n_jobs=1, penalty=None, random_state=None,
shuffle=True, tol=None, verbose=0, warm_start=False)

1.6 1.6 Imprimindo os resultados


In [6]: # imprimindo os resultados
print("Prediçao :> ", str(net.predict(X)))
print("Actual :> " , str(y))
print("Acurácia :> " , str(net.score(X, y)*100) + "%")
#

2
Prediçao :> [0 1 1 1]
Actual :> [0 1 1 1]
Acurácia :> 100.0%

1.7 1.7 Calculando o hiperplano (linha reta)


In [8]: # Calculando o hperplano (linha reta)
ymin, ymax = plt.ylim()
w = net.coef_[0]
a = -w[0] / w[1]
xx = np.linspace(ymin, ymax)
yy = a * xx - (net.intercept_[0]) / w[1]

1.8 1.8 Plotando a separação de classes


In [10]: # plotando os dados originais
colormap = np.array(['r','k'])
plt.scatter(X.T[0], X.T[1],c=colormap[y],s=400)
plt.xlabel('Perceptron OU')
plt.ylabel('Class e 0 e Classe 1')
plt.title('Porta Lógica OU')
#
# Plota a linha de separação
plt.plot(yy,xx, 'b-')

3
Out[10]: [<matplotlib.lines.Line2D at 0x15af44a9710>]