Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
1
respuesta

[Sugerencia] Sobre el ejercicio 2

# Bloc [4] Importaciones de librerías
import matplotlib.pyplot as plt
import numpy as np  # <-- FALTABA
from sklearn.datasets import make_circles
from sklearn.neural_network import MLPClassifier
import ipywidgets as widgets
from IPython.display import display
from ipywidgets import interactive

# Bloc [4.1] Generar los datos de prueba (FALTABA)
x, y = make_circles(n_samples=200, noise=0.2, factor=0.5, random_state=42)

# Bloc [5] Función para actualizar y mostrar el gráfico
def update_plot(hidden_layer_size):

    # Crear y entrenar el clasificador
    clf = MLPClassifier(
        hidden_layer_sizes=(hidden_layer_size,),
        activation='relu',
        max_iter=3000,
        random_state=1
    )
    clf.fit(x, y)

    # Crear cuadrícula para la frontera de decisión
    x_vals = np.linspace(x[:, 0].min() - 0.1, x[:, 0].max() + 0.1, 100)
    y_vals = np.linspace(x[:, 1].min() - 0.1, x[:, 1].max() + 0.1, 100)
    X_plane, Y_plane = np.meshgrid(x_vals, y_vals)
    grid_points = np.column_stack((X_plane.ravel(), Y_plane.ravel()))

    # Predecir clases
    Z = clf.predict(grid_points).reshape(X_plane.shape)
    y_pred = clf.predict(x)

    # Graficar
    plt.clf()
    plt.contourf(
        X_plane,
        Y_plane,
        Z,
        levels=[-0.5, 0.5, 1.5],
        cmap=plt.cm.RdYlGn,
        alpha=0.6
    )

    class_0 = y_pred == 0
    class_1 = y_pred == 1

    plt.scatter(
        x[class_0, 0], x[class_0, 1],
        c='red', edgecolors='k', marker='o', s=50, label='Predicted Class 0'
    )
    plt.scatter(
        x[class_1, 0], x[class_1, 1],
        c='green', edgecolors='k', marker='o', s=50, label='Predicted Class 1'
    )

    plt.xlabel('Característica 1')
    plt.ylabel('Característica 2')
    plt.title(f'Frontera de decisión (Capa oculta: {hidden_layer_size} neuronas)')
    plt.legend()
    plt.show()

# Bloc [6] Crear el slider y el widget interactivo
hidden_layer_size_slider = widgets.IntSlider(
    value=1,
    min=1,
    max=10,
    step=1,
    description='Capa oculta:'
)

interactive_plot = interactive(
    update_plot,
    hidden_layer_size=hidden_layer_size_slider
)

# Bloc [7] Mostrar el widget
display(interactive_plot)

Imagen VSC

1 respuesta
solución!

¡Hola, Christian!

Muchas gracias por compartir este aviso detallado y el código corregido. Es un excelente aporte para que la experiencia de los demás estudiantes en la actividad del perceptrón multicapa sea mucho más fluida.

¡Un saludo y gracias de nuevo por tu colaboración!