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%
![](https://beastieux.com/wp-content/uploads/2023/10/image.png)
Pérdida: 0.8083 Precisión: 33.33%
![](https://beastieux.com/wp-content/uploads/2023/10/image-1.png)
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.
Temp Mail This is my first time pay a quick visit at here and i am really happy to read everthing at one place
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
I was recommended this website by my cousin I am not sure whether this post is written by him as nobody else know such detailed about my difficulty You are wonderful Thanks
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
Hi my family member I want to say that this post is awesome nice written and come with approximately all significant infos I would like to peer extra posts like this
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
Wow wonderful blog layout How long have you been blogging for you make blogging look easy The overall look of your site is great as well as the content
I was suggested this web site by my cousin Im not sure whether this post is written by him as no one else know such detailed about my trouble You are incredible Thanks
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
I am truly thankful to the owner of this web site who has shared this fantastic piece of writing at at this place.
Your website is a great place for me to learn new things, and I appreciate it. Enjoy your journey to shine a light on people’s minds with your amazing writing.