Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
clase:iabd:pia:1eval:tema04 [2024/11/19 19:08] admin [Mini-proyecto] |
clase:iabd:pia:1eval:tema04 [2025/03/22 13:06] (actual) admin [Personalización] |
||
---|---|---|---|
Línea 261: | Línea 261: | ||
figure.suptitle(" | figure.suptitle(" | ||
- | subfigure_a, | + | subfigures |
+ | subfigure_a=subfigures[0] | ||
+ | subfigure_b=subfigures[1] | ||
subfigure_a.suptitle(" | subfigure_a.suptitle(" | ||
Línea 841: | Línea 843: | ||
También podemos obtener el siguiente color que vamos a usar con: | También podemos obtener el siguiente color que vamos a usar con: | ||
<sxh python> | <sxh python> | ||
+ | #Versiones nuevas | ||
+ | color=axes._get_lines.get_next_color() | ||
+ | #Versiones antiguas | ||
color=next(axes._get_lines.prop_cycler)[' | color=next(axes._get_lines.prop_cycler)[' | ||
</ | </ | ||
Línea 1095: | Línea 1100: | ||
Como podemos ver hay muchos estilos relacionados con [[https:// | Como podemos ver hay muchos estilos relacionados con [[https:// | ||
+ | |||
+ | ==== Definir el propio estilo ==== | ||
+ | Normalmente queremos que todas nuestras gráficas tengan un mismo estilo , por ello es bueno crear una serie de funciones estándar que siempre usaremos. | ||
+ | |||
+ | * La primera función que usamos se llama '' | ||
+ | |||
+ | <sxh python> | ||
+ | def axes_configure_labels(axes, | ||
+ | color="# | ||
+ | facecolor="# | ||
+ | gridcolor="# | ||
+ | tickcolor="# | ||
+ | fontsize_label=13 | ||
+ | |||
+ | axes.set_xlabel(xlabel, | ||
+ | axes.set_ylabel(ylabel, | ||
+ | axes.set_title(title, | ||
+ | |||
+ | axes.set_facecolor(facecolor) | ||
+ | axes.spines[' | ||
+ | axes.spines[' | ||
+ | axes.spines[' | ||
+ | axes.spines[' | ||
+ | axes.tick_params(axis=' | ||
+ | |||
+ | axes.grid(visible=True, | ||
+ | axes.set_axisbelow(True) | ||
+ | |||
+ | handles, labels = axes.get_legend_handles_labels() | ||
+ | if labels: | ||
+ | axes.legend(fontsize=fontsize_label-2, | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | * La siguiente función es '' | ||
+ | |||
+ | <sxh python> | ||
+ | def axes_configure_axis_for_metrics(axes): | ||
+ | axes.set_xlim(xmin=0, | ||
+ | axes.set_ylim(ymin=0, | ||
+ | |||
+ | axes.xaxis.set_major_locator(MultipleLocator(0.1)) | ||
+ | axes.yaxis.set_major_locator(MultipleLocator(0.1)) | ||
+ | </ | ||
+ | |||
+ | |||
+ | * Para mostrar las gráficas de la pérdida en función de las épocas se usarán las funciones '' | ||
+ | |||
+ | |||
+ | <sxh python> | ||
+ | def axes_configure_axis_for_epochs(axes, | ||
+ | axes.xaxis.set_major_locator(MaxNLocator(10, | ||
+ | axes.yaxis.set_major_locator(LinearLocator(10)) | ||
+ | axes.set_ylim(ymin=0, | ||
+ | </ | ||
+ | |||
+ | |||
+ | <sxh python> | ||
+ | def plot_history_metric(axes, | ||
+ | |||
+ | if (label==None): | ||
+ | label=metric_name | ||
+ | |||
+ | axes.plot(history[metric_name], | ||
+ | axes.plot(history[' | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Usándose así: | ||
+ | |||
+ | <sxh python> | ||
+ | figure=plt.figure(figsize=(6, | ||
+ | axes=figure.add_subplot(1, | ||
+ | |||
+ | plot_history_metric(axes, | ||
+ | axes_configure_labels(axes," | ||
+ | axes_configure_axis_for_epochs(axes, | ||
+ | </ | ||
+ | |||
+ | |||
===== Ejercicios ===== | ===== Ejercicios ===== | ||
Línea 1903: | Línea 1990: | ||
{{: | {{: | ||
+ | === Paso 14 === | ||
+ | Siguiendo con el DataSet de los precios de viviendas en la ciudad de Boston, vamos a mostrar las gráficas con | ||
+ | las pérdidas y la métrica del Coeficiente de determinación o R² de todas las redes neuronales que se entrenaron en el tema anterior (entrenamiento y validación) | ||
+ | |||
+ | Para poder mostrar el Coeficiente de determinación o R² deberemos modificar el método '' | ||
+ | <sxh python> | ||
+ | model.compile(loss=' | ||
+ | </ | ||
+ | |||
+ | Se usa de la siguiente forma: | ||
+ | * Obtener el R² para cada época en el entrenamiento | ||
+ | <sxh python> | ||
+ | r2_score=history.history[' | ||
+ | </ | ||
+ | |||
+ | * Obtener el R² para cada época en validación | ||
+ | <sxh python> | ||
+ | r2_score_validacion=history.history[' | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | {{: | ||
+ | |||
+ | |||
+ | <sxh python> | ||
+ | redes_neuronales=[ | ||
+ | [[20, | ||
+ | [[20, | ||
+ | [[20, | ||
+ | [[20, | ||
+ | [[20, | ||
+ | [[20, | ||
+ | [[20, | ||
+ | [[20, | ||
+ | [[20, | ||
+ | [[20, | ||
+ | [[20, | ||
+ | [[20, | ||
+ | [[20, | ||
+ | [[20, | ||
+ | [[20, | ||
+ | ] | ||
+ | |||
+ | epochs=300 | ||
+ | </ | ||
+ | |||
+ | <sxh base> | ||
+ | Nombre | ||
+ | | ||
+ | -------- | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 10 [20, 40, 80, 40, 20, 1] 300 relu | ||
+ | 11 [20, 40, 80, 40, 20, 1] 300 selu | ||
+ | 12 [20, 40, 80, 40, 20, 1] 300 tanh | ||
+ | 13 [20, 40, 80, 160, 80, 40, 20, 1] | ||
+ | 14 [20, 40, 80, 160, 80, 40, 20, 1] | ||
+ | 15 [20, 40, 80, 160, 80, 40, 20, 1] | ||
+ | |||
+ | </ | ||
+ | |||
+ | Para cada una de las redes indica: | ||
+ | * Si tiene unas buenas métricas en la última época | ||
+ | * Si es buena o mala red , es decir si la elegirías. Explica el motivo | ||
+ | * Compara los resultados con los del tema anterior ¿Porque hay esas variaciones? | ||
+ | |||
+ | === Paso 15 === | ||
+ | Repite el ejercicio anterior pero ahora solo para 10 épocas y muestra solo la pérdida en entrenamiento y validación. | ||
+ | |||
+ | {{: | ||
+ | Para cada una de las redes indicas si podrías " | ||