TensorFlow / Python: Clasificación Binaria con Redes Neuronales de un solo Perceptrón

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.

  1. 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].
  2. 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.
  3. 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:

  1. Genera Datos de Entrenamiento: Se crean datos de entrenamiento X y etiquetas Y para la clasificación binaria. En este caso, X son las características y Y son las etiquetas binarias (0 o 1).
  2. 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.
  3. 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.
  4. Entrena el Modelo: Se entrena el modelo en los datos de entrenamiento X y Y durante 1000 épocas.
  5. 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.
  6. 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.

12 thoughts on “TensorFlow / Python: Clasificación Binaria con Redes Neuronales de un solo Perceptrón

  1. you are truly a just right webmaster The site loading speed is incredible It kind of feels that youre doing any distinctive trick In addition The contents are masterwork you have done a great activity in this matter

  2. What i dont understood is in reality how youre now not really a lot more smartlyfavored than you might be now Youre very intelligent You understand therefore significantly in terms of this topic produced me personally believe it from a lot of numerous angles Its like women and men are not interested except it is one thing to accomplish with Woman gaga Your own stuffs outstanding Always care for it up

  3. Excellent blog here Also your website loads up very fast What web host are you using Can I get your affiliate link to your host I wish my web site loaded up as quickly as yours lol

  4. you are in reality a good webmaster The website loading velocity is amazing It sort of feels that youre doing any distinctive trick Also The contents are masterwork you have done a fantastic job in this topic

Deja un comentario