Está en la página 1de 10

Perceptrón.

Un perceptrón es una neurona artificial, y, por tanto, una unidad de red neuronal.
El perceptrón efectúa cálculos para detectar características o tendencias en los
datos de entrada.

Se trata de un algoritmo para el aprendizaje supervisado de clasificadores


binarios. Ese algoritmo es el que permite que las neuronas artificiales aprendan y
traten los elementos de una serie de datos.

El perceptrón desempeña un papel esencial en los proyectos de Machine


Learning. Se utiliza en gran medida para clasificar datos, o como algoritmo que
permite simplificar o supervisar las capacidades de aprendizaje de los
clasificadores binarios.

Recordemos que el aprendizaje supervisado consiste en enseñar a un algoritmo a


hacer predicciones. Para conseguirlo, se alimenta el algoritmo con ayuda de datos
que ya están etiquetados correctamente.

La regla de aprendizaje del perceptrón.

Según la Perceptron Learning Rule (regla de aprendizaje del perceptrón), el


algoritmo enseña automáticamente los coeficientes de peso óptimo. Para
determinar si una neurona “se enciende” o no, las características de los datos de
entrada se multiplican por esos pesos

El perceptrón recibe múltiples señales de entrada. Si la suma de las señales


supera un umbral determinado, se produce una señal o, por el contrario, no se
emite ningún resultado.

En el marco del método de aprendizaje supervisado de Machine Learning, es lo


que permite predecir la categoría de una muestra de datos. Por tanto, se trata de
un elemento esencial.
Introducción.
El motivo de esta práctica es calcular la recta respecto a unos puntos en un plano
cartesiano que ingresaremos mediante clics, además de que se ingresarán los tres
pesos sinápticos, dados dichos pesos se determinará la posición y color de cada
salida, esto con el fin de trazar la recta dependiendo de estos datos previamente
ingresados.

Ejecución del código.

Imagen 1; Ventana inicial


Imagen 2; Puntos ingresados en el plano cartesiano.

Imagen 3; Pesos ingresados y generación de la recta.


Imagen 4; Cambiando los puntos y los pesos (ejemplo 2).

Imagen 5; Cambiando los puntos y los pesos (ejemplo 3).


Imagen 6; Cambiando los puntos y los pesos (ejemplo 4).

Imagen 7; Cambiando los puntos y los pesos (ejemplo 5).


Código.
from typing_extensions import Self
from matplotlib.backends.backend_tkagg import (
FigureCanvasTkAgg, NavigationToolbar2Tk)
from matplotlib.figure import Figure
import tkinter as tk
import matplotlib.pyplot as plt
from numpy import zeros

class Ventana():
def __init__(self, master):
self.master = master
self.w1 = tk.IntVar()
self.w2 = tk.IntVar()
self.bias = tk.IntVar()
self.guardaX = 0
self.valor = 0
self.datosX = []
self.datosY = []
self.datos = []
self.fig = plt.figure(figsize=(6, 4))
self.ax = self.fig.add_subplot(111)
self.fig.patch.set_facecolor('xkcd:aqua')
set_xlim = [-10, 10]
set_ylim = [-10, 10]
zeros = [0, 0]
self.ax.plot(set_xlim, zeros, 'k')
self.ax.plot(zeros, set_ylim, 'k')
plt.xlabel('X-axis', fontsize=10)
plt.ylabel('Y-axis', fontsize=10)
self.ax.set_title("Perceptron")
self.canvas = FigureCanvasTkAgg(self.fig, master=self.master)
self.canvas.draw()
self.canvas.flush_events()
self.canvas.get_tk_widget().place(x=0, y=0)
toolbar = NavigationToolbar2Tk(self.canvas, self.master)
self.canvas.mpl_connect("button_press_event", self.mouse)
tk.Label(self.master, text="w1").place(x=30, y=420)
self.val_w1 = tk.Entry(self.master, textvariable=self.w1)
self.val_w1.place(x=60, y=420)
tk.Label(self.master, text="w2").place(x=150, y=420)
self.val_w2 = tk.Entry(self.master, textvariable=self.w2)
self.val_w2.place(x=170, y=420)
tk.Label(self.master, text="bias").place(x=280, y=420)
self.val_bias = tk.Entry(self.master, textvariable=self.bias)
self.val_bias.place(x=310, y=420)
tk.Button(self.master, text="Perceptron", command=self.linea,
justify="center", width=10, height=2).place(x=400,
y=410)
tk.Button(self.master, text="Reiniciar",
command=self.borrar, activeforeground="#F50743",
width=10, height=2).place(x=490, y=410)

def linea(self):
self.a = -1*(float)(self.val_w1.get())/(float)(self.val_w2.get())
self.b = (float)(self.val_bias.get())/(float)(self.val_w2.get())
self.ax.cla()
plt.title("Perceptron")
set_xlim = [-10, 10]
set_ylim = [-10, 10]
zeros = [0, 0]
self.ax.plot(set_xlim, zeros, 'k')
self.ax.plot(zeros, set_ylim, 'k')
for i in range(len(self.datosX)):
self.operacion = ((self.datosX[i] *
(float)(self.val_w1.get())) +
(self.datosY[i] *
(float)(self.val_w2.get())))-(float)(self.val_bias.get())
if self.operacion > 0.0:
self.ax.scatter(self.datosX[i], self.datosY[i],
color="black")
else:
self.ax.scatter(self.datosX[i], self.datosY[i],
color="red")
plt.axline((self.guardaX, self.guardaX*self.a+self.b),
slope=self.a, color="blue")
self.canvas.draw()

def mouse(self, event):


if (event.button == 1):
self.datos.append([event.xdata, event.ydata])
self.datosX.append(event.xdata)
self.datosY.append(event.ydata)
if (self.valor == 0):
self.guardaX = event.xdata
color = "blue"
marca = "."
self.ax.scatter(event.xdata, event.ydata,
marker=marca, color=color, linewidth=2)
self.canvas.draw()
self.valor = self.valor+1

def borrar(self):
self.datos = []
self.datosX = []
self.datosY = []
self.ax.cla()
set_xlim = [-10, 10]
set_ylim = [-10, 10]
zeros = [0, 0]
self.ax.plot(set_xlim, zeros, 'k')
self.ax.plot(zeros, set_ylim, 'k')
plt.xlabel('X-axis', fontsize=10)
plt.ylabel('Y-axis', fontsize=10)
self.ax.set_title("Perceptron")
self.canvas.draw()

root = tk.Tk()
root.title("Perceptron")
root.geometry("610x510+0+0")
app = Ventana(root)
tk.mainloop()
Conclusiones.
Las redes neuronales son la base de la inteligencia artificial y conocemos al
perceptrón como la más básica de estas, por tanto, se sientan las bases de lo que
se verá en el curso al realizar esta práctica.

Una red neuronal es bastante importante para el desarrollo de la inteligencia


artificial como tal y sus aplicaciones son bastante diversas, es un tema de
bastante interés científico.

Bibliografía.
 Rédac, T. (2022, 7 julio). Perceptrón: ¿Qué es y para qué sirve? Formation
Data Science | DataScientest.com. Recuperado 6 de septiembre de
2022, de https://datascientest.com/es/perceptron-que-es-y-para-que-
sirve

También podría gustarte