Herramientas de usuario

Herramientas del sitio


clase:iabd:pia:1eval:tema01

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
clase:iabd:pia:1eval:tema01 [2021/09/19 18:02]
admin
clase:iabd:pia:1eval:tema01 [2024/11/03 19:17] (actual)
admin [Gráficas]
Línea 113: Línea 113:
 from sklearn.datasets import load_iris from sklearn.datasets import load_iris
 from matplotlib.colors import LightSource from matplotlib.colors import LightSource
 +import random
  
 iris=load_iris() iris=load_iris()
Línea 126: Línea 127:
 np.random.seed(5) np.random.seed(5)
 tf.random.set_seed(5) tf.random.set_seed(5)
 +random.seed(5)  
  
 model=Sequential() model=Sequential()
Línea 139: Línea 140:
  
  
-print(model.predict([[4.9,1.4]])) +print(model.predict(np.array([[4.9,1.4]]))) 
-print(model.predict([[6.3,4.9]]))+print(model.predict(np.array([[6.3,4.9]])))
  
 </sxh> </sxh>
Línea 183: Línea 184:
 np.random.seed(5) np.random.seed(5)
 tf.random.set_seed(5) tf.random.set_seed(5)
 +random.seed(5)  
 </sxh> </sxh>
  
Línea 247: Línea 249:
  
 <sxh python> <sxh python>
-print(model.predict([[4.9,1.4]])) +print(model.predict(np.array([[4.9,1.4]]))) 
-print(model.predict([[6.3,4.9]]))+print(model.predict(np.array([[6.3,4.9]])))
 </sxh> </sxh>
  
Línea 336: Línea 338:
  
 Lo que hay que hacer es comparar los datos de las 2 gráficas para si son coherentes entre ellas. Y obviamente lo son Lo que hay que hacer es comparar los datos de las 2 gráficas para si son coherentes entre ellas. Y obviamente lo son
 +
 +==== Las dificultades de la IA ====
 +Al entrenar una IA lo dificil es cuando se encuentra con cosas que no habías previsto.
 +
 +{{:clase:iabd:pia:1eval:muffin_chiguagua.jpeg|}}
 +
 +
 +
 +
  
 ===== Ejercicios ===== ===== Ejercicios =====
Línea 350: Línea 361:
  
 ==== Ejercicio 2 ==== ==== Ejercicio 2 ====
-Vamos a ver como se comportan las predicciones haciendo distintos cambios en nuestra red neuronal+Modifica ahora la red neuronal de forma que:
  
-Los cambios son los siguientes: +    * La 1º  capa oculta tenga 4 neuronas en vez de 6 
-  * No random seed +    * La 2º capa oculta tenga 6 neuronas en vez de 12 
-Deberás eliminar las siguientes líneas: +    * La 3º capa oculta tenga 4 neuronas en vez de 6 
-<sxh python> +    * La 4º capa seguirá teniendo 1 neurona
-np.random.seed(5) +
-tf.random.set_seed(5) +
-</sxh> +
- +
- +
-  * **2 épocas** +
-  +
-En el método ''fit'' cambia el número de épocas para que sea solo 2  +
- +
- +
-  * **Red neuronal pequeña** +
- +
-Modifica el código python de la red neuronal original de forma que: +
-    * La 1º  capa oculta tenga 4 capas en vez de 6 +
-    * La 2º capa oculta tenga 6 capas en vez de 12 +
-    * La 3º capa oculta tenga 4 capas en vez de 6+
  
 Usando la web [[http://alexlenail.me/NN-SVG/index.html]] dibuja la red neuronal que acabas de crear Usando la web [[http://alexlenail.me/NN-SVG/index.html]] dibuja la red neuronal que acabas de crear
  
  
-Ahora muestra los resultados en la siguiente tabla+Ahora muestra los resultados
  
-|  **Largo Sépalo**  |  **Largo Pétalo**  |  **Resultado red neuronal Original**  |  **No random seed**  |  **2 épocas**  |  **Red neuronal pequeña**  |  **Tipo de Flor(0 o 1)**  | +|  **Largo Sépalo**  |  **Largo Pétalo**  |  **Resultado red neuronal**  |  ** Tipo de Flor(0 o 1)**  | 
-|  5.4    1.7   |    |    |    |    |    | +|  5.4    1.7      |    | 
-|  5.5    4.0   |    |    |    |    |    |+|  5.5    4.0      |    |
  
  
Línea 398: Línea 393:
 flower_type=iris.target[:] flower_type=iris.target[:]
 </sxh> </sxh>
 +
 +Entrena la red con los nuevos datos
  
 Muestra la gráfica con los datos de entrada usando el código: Muestra la gráfica con los datos de entrada usando el código:
Línea 473: Línea 470:
 {{ :clase:iabd:pia:1eval:nucleos_celulares_cancer.png?direct&400 |}} {{ :clase:iabd:pia:1eval:nucleos_celulares_cancer.png?direct&400 |}}
  
 +Y los histogramas de todos los datos son los siguientes:
  
-Deberás hacer 3 redes neuronales distintas ( llamadas **A**, **B** y **C**) y comprobar las predicciones con 4 conjuntos de datos distintos  (llamados **1º**, **2º**, **3º** y **4º**).+{{ :clase:iabd:pia:1eval:breast_cancer_kde.png?direct |}}
  
-|  Datos  |  Resultado red neuronal **A**  |  Resultado red neuronal **B**  |  Resultado red neuronal **C**  |  ** Resultado Real **  | +Podemos ven en los histogramas que no hay una forma fácil de saber si una célula es o no cancerígena.
-|   **1º**  |        |    | +
-|   **2º**  |        |    | +
-|   **3º**  |        |    | +
-|   **4º**  |        |    |+
  
-Para ver los datos junto a su preducción puedes usar las siguientes líneas: +<note important> 
-<sxh python+En vez de incluir todos los datos en la red neuronal , habría que hacer un Análisis exploratorio de datos (EDA) y por ejemplo eliminar las columnas que están relacionadas. 
-np.set_printoptions(threshold=np.inf) +</note
-np.set_printoptions(suppress=True) + 
-print(np.column_stack((x,y)))+Imprime el valor de la fila 56 tanto de la ''x'' como de la ''y''. 
 + 
 +<sxh> 
 +#Para que los datos no se muestren con notación científica 
 +np.set_printoptions(suppress=True)  
 + 
 +print(x[56],y[56])
 </sxh> </sxh>
  
-Y mostrará algo simular a ésto+Ahora muestra los valores de la ''x'' y la ''y'' para la fila 204. 
-<sxh base> + 
-[[  17.99        10.38       122.8       1001.           0.1184 + 
-     0.2776       0.3001       0.1471       0.2419       0.07871 +Crea una red neuronal en las que en cada capa tenga los siguientes números de neuronas
-     1.095        0.9053       8.589      153.4          0.006399 + 
-     0.04904      0.05373      0.01587      0.03003      0.006193 +|  **Nº Capa**  |  **Nº Neuronas** 
-    25.38        17.33       184.6       2019.           0.1622 +|   1º  |  30   | 
-     0.6656       0.7119       0.2654       0.4601       0.1189 +|   2º  |  60   | 
-     0.       ] +|   3º  |  100   | 
-  20.57        17.77       132.9       1326.           0.08474 +|   4º  |  60   | 
-     0.07864      0.0869       0.07017      0.1812       0.05667 +|   5º  |  30   | 
-     0.5435       0.7339       3.398       74.08         0.005225 +|   6º  10   | 
-     0.01308      0.0186       0.0134       0.01389      0.003532 +|   7º  |    | 
-    24.99        23.41       158.8       1956.           0.1238 + 
-     0.1866       0.2416       0.186        0.275        0.08902 + 
-     0.       ] +Rellena la siguiente tabla y muestrala 
-    ..................... + 
-  20.        29.33       140.1       1265.           0.1178 + **Fila Datos**  | **Resultado ''verdadero''**  |  **Resultado red neuronal**  | 
-     0.277        0.3514       0.152        0.2397       0.07016 +|   56     |    | 
-     0.726        1.595        5.772       86.22         0.006522 +|   204     |    | 
-     0.06158      0.07117      0.01664      0.02324      0.006185 + 
-    25.74        39.42       184.6       1821.           0.165 +¿Es una buena red? 
-     0.8681       0.9387       0.265        0.4087       0.124 + 
-     0.       ] + 
-   7.76        24.54        47.92       181.           0.05263 +Usa hora una red más pequeña de forma que tenga las siguientes capas: 
-     0.04362      0.           0.           0.1587       0.05884 + 
-     0.3857       1.428        2.548       19.15         0.007189 +|  **Nº Capa**  |  **Nº Neuronas** 
-     0.00466      0.           0.           0.02676      0.002783 +|   1º    | 
-     9.456       30.37        59.16       268.         0.08996 +|   2º  |  12   | 
-     0.06444      0          0          0.2871       0.07039 +|   3º  |  6   | 
-     1      ]]+|   4º  |    | 
 + 
 + 
 +Rellena la siguiente tabla y muestrala 
 + 
 +|  **Fila Datos**  | **Resultado ''verdadero''**  |  **Resultado red neuronal** 
 +  56  |     |    | 
 +|   204     |    | 
 + 
 +¿Es una buena red? 
 + 
 +==== Ejercicio ==== 
 +Repite la red pequeña del ejercicio  anterior pero ahora modificando la semilla de los números aleatorios 
 +<sxh> 
 +np.random.seed(5) 
 +tf.random.set_seed(5) 
 +random.seed(5)
 </sxh> </sxh>
  
-Siendo la última columna es resultado que debe dar. Y las 30 primeras columnas la entrada al método ''predict''+Rellena la siguiente tabla y muestrala con una **red con la semilla 6** 
 + 
 +|  **Fila Datos**  | **Resultado ''verdadero''**  |  **Resultado red neuronal** 
 +|   56  |        | 
 +|   204  |        | 
 + 
 +Rellena la siguiente tabla y muestrala con una **red con la semilla 88** 
 + 
 +|  **Fila Datos**  | **Resultado ''verdadero''**  |  **Resultado red neuronal** 
 +|   56  |        | 
 +|   204  |        |
  
clase/iabd/pia/1eval/tema01.1632067328.txt.gz · Última modificación: 2021/09/19 18:02 por admin