Código en Python y TensorFlow para realizar una clasificación binaria utilizando un perceptrón en TensorFlow. En este caso, se implementará un perceptrón simple para clasificar datos en dos clases distintas.
- Perceptrón: Un perceptrón es un tipo de neurona artificial que se utiliza en redes neuronales para realizar clasificación. Toma un conjunto de entradas, las pondera y las suma, y luego aplica una función de activación para producir una salida binaria. La función de activación más comúnmente utilizada es la función sigmoide, que produce valores en el rango [0, 1].
- Umbral de Decisión: El perceptrón tiene un umbral de decisión. Si la suma ponderada de las entradas es mayor o igual que el umbral, el perceptrón emite una salida de 1 (o “verdadero”). Si es menor que el umbral, emite una salida de 0 (o “falso”). El umbral es uno de los parámetros que el perceptrón aprende durante el entrenamiento.
- Clasificación Binaria: En el contexto de clasificación binaria, el perceptrón toma decisiones sobre a cuál de las dos clases pertenece una entrada. Por ejemplo, en un problema de clasificación de correos electrónicos como spam o no spam, el perceptrón decide si un correo es spam (clase 1) o no spam (clase 0) en función de sus características.
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
# Crear datos de entrenamiento
np.random.seed(0)
X = np.array([[1, 2], [2, 3], [2, 2.5], [3, 4], [4, 3], [5, 5]])
Y = np.array([0, 0, 0, 1, 1, 1]) # Etiquetas binarias (0 o 1)
# Definir el modelo del perceptrón
model = tf.keras.Sequential()
model.add(tf.keras.layers.Input(shape=(2,)))
model.add(tf.keras.layers.Dense(1, activation='sigmoid'))
# Compilar el modelo
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
# Entrenar el perceptrón
model.fit(X, Y, epochs=1000, verbose=0) # Entrenamiento por 1000 épocas
# Evaluar el modelo
loss, accuracy = model.evaluate(X, Y)
print(f'Pérdida: {loss:.4f}')
print(f'Precisión: {accuracy*100:.2f}%')
# Visualizar la decisión del perceptrón
plt.scatter(X[:, 0], X[:, 1], c=Y, cmap='coolwarm')
ax = plt.gca()
xlim = ax.get_xlim()
ylim = ax.get_ylim()
# Generar puntos para trazar la línea de decisión
xx, yy = np.meshgrid(np.linspace(xlim[0], xlim[1], 100), np.linspace(ylim[0], ylim[1], 100))
xy = np.column_stack([xx.ravel(), yy.ravel()])
Z = model.predict(xy).reshape(xx.shape)
plt.contour(xx, yy, Z, levels=[0.5], colors='k')
plt.title("Decisión del Perceptrón")
plt.show()
Este código realiza lo siguiente:
- Genera Datos de Entrenamiento: Se crean datos de entrenamiento
X
y etiquetasY
para la clasificación binaria. En este caso,X
son las características yY
son las etiquetas binarias (0 o 1). - Define el Modelo del Perceptrón: Se define un modelo de perceptrón utilizando TensorFlow y Keras. El modelo consta de una capa de entrada y una capa densa con una función de activación sigmoide. Este modelo es adecuado para realizar una clasificación binaria.
- Compila el Modelo: El modelo se compila especificando el optimizador (‘adam’) y la función de pérdida (‘binary_crossentropy’) para el entrenamiento. Además, se mide la precisión como métrica.
- Entrena el Modelo: Se entrena el modelo en los datos de entrenamiento
X
yY
durante 1000 épocas. - Evalúa el Modelo: El modelo se evalúa en los mismos datos de entrenamiento y se muestra la pérdida y precisión obtenidas durante el entrenamiento.
- Visualiza la Decisión del Perceptrón: Se utiliza Matplotlib para visualizar cómo el perceptrón divide el espacio en dos regiones (una para cada clase) en función de su capacidad de predicción. Esto se logra mediante un gráfico de dispersión y la representación de la línea de decisión del perceptrón en el espacio bidimensional.
En el código anterior, la visualización de la “decisión del perceptrón” muestra cómo el perceptrón divide el espacio en dos regiones: una región donde emite una salida de 1 (clase positiva) y otra región donde emite una salida de 0 (clase negativa). Esta división se basa en los pesos del perceptrón y el umbral de decisión que el modelo ha aprendido durante el entrenamiento. La visualización te permite ver cómo el perceptrón realiza la clasificación en un espacio bidimensional y cómo dibuja una línea de decisión para separar las dos clases.
Pérdida: 0.4021 Precisión: 100.00%

Pérdida: 0.8083 Precisión: 33.33%

Este es un ejemplo simple de clasificación binaria utilizando un perceptrón en TensorFlow. Puedes experimentar con diferentes conjuntos de datos y configuraciones de perceptrón para obtener una comprensión más profunda de cómo funciona.
One thought on “TensorFlow / Python: Clasificación Binaria con Redes Neuronales de un solo Perceptrón”