Herramientas de usuario

Herramientas del sitio


clase:iabd:pia:1eval:tema05

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:tema05 [2022/01/24 14:40]
admin [Ejercicios]
clase:iabd:pia:1eval:tema05 [2022/02/06 21:02] (actual)
admin [Ejercicios]
Línea 84: Línea 84:
 </sxh> </sxh>
  
-  * Cargar los datos des un fichero de texto llamado "datos.csv" cuyo separador es una coma.+  * Cargar los datos desde un fichero de texto llamado "datos.csv" cuyo separador es una coma.
  
 <sxh python> <sxh python>
Línea 90: Línea 90:
 </sxh> </sxh>
  
 +
 +<note>
 +Si al guardar los datos **NO** se añadió el parámetro ''index=False'' ,al leer el fichero se deberá añadir el parámetro ''index_col=0''
 +<sxh python>
 +df.to_csv("datos.csv")
 +df=pd.read_csv("datos.csv",index_col=0)
 +</sxh>
 +
 +</note>
  
   * Cargar los datos desde una base de datos relacional   * Cargar los datos desde una base de datos relacional
Línea 189: Línea 198:
 <sxh base> <sxh base>
        capacidad      precio        capacidad      precio
-count  31.000000   31.000000 +count  28.000000   28.000000 
-mean    3.760000  152.741935 +mean    4.092143  157.428571 
-std     5.049022  153.423807+std     5.209273  158.877178
 min     0.120000   22.000000 min     0.120000   22.000000
-25%     0.506000   50.500000 +25%     0.512000   50.750000 
-50%     1.000000   88.000000 +50%     1.750000   89.500000 
-75%     4.500000  185.000000+75%     5.250000  184.000000
 max    18.000000  612.000000 max    18.000000  612.000000
 </sxh> </sxh>
Línea 206: Línea 215:
  
 <sxh base> <sxh base>
-150.7+157.42
 </sxh> </sxh>
  
Línea 215: Línea 224:
 </sxh> </sxh>
  
-<sxh base> +<sxh base>158.87</sxh
-155.617601610597 + 
-</sxh>+  * Suma de una columna  
 +  
 +<sxh python>  
 +df.precio.sum()   
 +</sxh>  
 +  
 +<sxh base>4408.0</sxh>  
 +  
 +  * Máximo de una columna  
 +  
 +<sxh python>  
 +df.precio.max()  
 +</sxh>  
 +  
 +<sxh base>612.0</sxh>  
 +  
 +  * Mínimo de una columna  
 +  
 +<sxh python>  
 +df.precio.min()  
 +</sxh>  
 +  
 +<sxh base>22.0</sxh>
  
-  * Correlación entre columnas+   * Correlación entre columnas
  
 <sxh python> <sxh python>
Línea 227: Línea 258:
 <sxh base> <sxh base>
            capacidad    precio            capacidad    precio
-capacidad   1.000000  0.949407 +capacidad   1.000000  0.962542 
-precio      0.949407  1.000000+precio      0.962542  1.000000
 </sxh> </sxh>
  
Línea 523: Línea 554:
 ===== Ejercicios ===== ===== Ejercicios =====
  
-==== Ejercicio 1 ==== +==== Ejercicio 1.A ==== 
-Crea un DataDrame con los datos que proporciona ''load_iris''. Recuerda que la propiedad ''feature_names'' retorna los nombres. La la columna de los  tipos de flor la debes llamar ''tipo_flor''+Crea un DataDrame con los datos que proporciona ''load_iris''. Recuerda que la propiedad ''feature_names'' retorna los nombres. La columna de los  tipos de flor la debes llamar ''tipo_flor''
  
  
Línea 532: Línea 563:
     * Ahora prueba a cargarlo     * Ahora prueba a cargarlo
   * Muestra el nombre de las columnas y los tipos de datos de cada una de ellas.   * Muestra el nombre de las columnas y los tipos de datos de cada una de ellas.
-  * Imprime "El nº de número de características es: NNNNN y el número de muestras es: NNNNNN" +  * Imprime por pantalla "El nº de número de características es: NNNNN y el número de muestras es: NNNNNN" 
-  * Muestra las primeras filas +  * Imprime por pantalla las primeras filas 
-  * Muestra las últimas filas+  * Imprime por pantalla las últimas filas
   * ¿Cuando ocupa en memoria el DataFrame?   * ¿Cuando ocupa en memoria el DataFrame?
  
 +==== Ejercicio 1.B ====
 +Siguiendo con el DataFrame anterior imprime por pantalla:
 +
 +  * El tamaño medio del ancho del pétalo
 +  * La desviación del ancho del pétalo
 +  * El máximo ancho del pétalo
 +  * El mínimo ancho del pétalo
 +
 +==== Ejercicio 1.C ====
 +Siguiendo con el DataFrame anterior:
 +
 +  * Imprime por pantalla el nombre de las columnas como un array
 +  * Imprime por pantalla el nombre de la primera columna
 +  * Imprime por pantalla el número de columnas que hay.
 +  * Cambia el nombre de la columna "tipo_flor" por el de "target"
 +  * Mueve la columna "target" al final del DataFrame
 +  * Inserta una nueva columna que sea el área del pétalo. Deberás insertarla antes de la última columna.
 +  * Inserta una nueva columna que sea el área del sépalo. Deberás insertarla antes de la última columna.
 +
 +
 +==== Ejercicio 1.D ====
 +Siguiendo con el DataFrame anterior imprime por pantalla:
 +
 +  * El ancho del pétalo de las flores de tipo "0" pero cuyo largo del pétalo sea entre [1.3,1.9] 
 +  * El ancho del sépalo de las flores de tipo "1"
 +  * Indica los tipos de flores que hay.
 +  * Indica cuantos valores de la columna "target" son "null"
 +  * Indicar cuantos valores del DataFrame son "null"
 +  * ¿Como se borrarían aquellas filas que tienen algún datos que es null?
 +
 +==== Ejercicio 1.E ====
 +Siguiendo con el DataFrame anterior y usando [[https://seaborn.pydata.org/|Seaborn]]:
 +  * Muestra un scatter plot del ancho del pétalo en el eje X y el ancho del sépalo en el eje Y según el tipo de flor.
 +  * Muestra el gráfico KDE de la distribución del largo del pétalo y del largo del sépalo.
 +  * Muestra el gráfico KDE de la distribución del largo del pétalo y del largo del sépalo pero separado por el tipo de flor.
 +  * Muestra un //pairplot//
 +
 +==== Ejercicio 2.A ====
 +Descarga el siguiente fichero {{ :clase:iabd:pia:1eval:tiempos_red_neuronal.csv |}} que contiene los segundos que ha tardado en entrenarse una red neuronal según el nº de épocas y la función de activación usada
 +
 +  * Abre el fichero con un editor de texto y comprueba que formato tiene
 +  * Carga el fichero con pandas
 +  * Muestra las columnas que tiene
 +  * Renombra la columna ''talla'' a ''epoca''
 +  * Muestra cuantas filas hay
 +  * Muestra cuantos valores son null o NaN en cada columna
 +  * Muestra el % de valores a null o NaN en cada columna
 +  * Borra las filas que tengan algún valor a null o NaN
 +  * Muestra las estadísticas de cada columna. ¿Podrías borrar alguna? ¿Explica porqué? En caso afirmativo borra la columna
 +  * Indica que funciones de activación se han usado
 +  * Indica hasta cuantas épocas se ha entrenado la red
 +  * Indica la función de activación que ha tenido el mayor tiempo en la última época
 +
 +==== Ejercicio 2.B ====
 +Siguiendo con el DataFrame anterior:
 +
 +  * Muestra un scatter plot
 +    * Eje X:Época
 +    * Eje Y:Tiempo
 +    * Separa los datos por colores según la función de activación
 +    * Añade un título al gráfico y a los 2 ejes.
 +
 +¿Ves algo raro en los datos?
 +
 +{{:clase:iabd:pia:1eval:tiempos_red_neuronal.csv.scatter.png?direct|}}
 +
 +==== Ejercicio 2.C ====
 +Siguiendo con el DataFrame anterior:
 +
 +  * Haz una regresión lineal de los datos para cada tipo de activación.
 +  * Haz un gráfico que:
 +    * Muestre la recta de la regresión de cada función de activación.
 +    * En la etiqueta de cada función de activación se muestre también el valor de R² para cada uno de ellos.
 +
 +{{:clase:iabd:pia:1eval:tiempos_red_neuronal.csv.regresion.png?direct|}}
 +
 +
 +==== Ejercicio 2.D ====
 +Siguiendo con el DataFrame anterior:
 +
 +La gráfica no deja claro cda una de las rectas. Para mejorarlo se podría anotar al final de cada recta el nombre de la función de activación tal y como se muestra en el siguiente gráfico:
 +
 +{{:clase:iabd:pia:1eval:tiempos_red_neuronal.csv.regresion_anotado.png?direct|}}
 +
 +Para poner texto en una gráfica se usa el método [[https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.annotate.html|annotate]] y la librería [[https://github.com/Phlya/adjustText|adjustText - automatic label placement for matplotlib]]
 +
 +
 +==== Ejercicio 3.A ====
 +Usando la función ''plot_metrics'' muestra las gráficas de las pérdidas por épocas de las siguientes redes neuronales para el DataFrame de las flores:
 +
 +^  Nº Neuronas en cada capa  ^
 +|  2,4,2, |
 +|  4,8,4, |
 +|  8,16,8, |
 +|  4,8,4,2, |
 +|  8,16,8,4, |
 +|  16,32,16,8, |
 +|  32,64,32,8, |
 +|  64,128,64,8, |
 +|  8,16,32,64,32,16,8, |
 +
 +Además:
 +  * Deberás mostrar los 9 subplots en la  disposición de 9x1 (9 filas y 1 columna)
 +  * El título de cada subplot será el nº de neuronas por capa
 +
 +
 +
 +==== Ejercicio 3.B ====
 +Siguiendo con el DataFrame anterior:
  
 +  * Para las 4 columnas de las características de las flores y el tipo de flor, crea 5 nuevas columnas que se llamen igual pero con el prefijo ''normalizado_''. Esas 5 nuevas columnas tendrán los valores según la fórmula:
  
 +$$
 +valor = \frac {X-min}{max-min}
 +$$
  
 +  * Para las 4 columnas de las características de las flores y el tipo de flor, crea 5 nuevas columnas que se llamen igual pero con el prefijo ''standarizado_''. Esas 5 nuevas columnas tendrán los valores según la fórmula:
  
-Crear una gráfica de scatter+$$ 
 +valor = \frac {X-media}{desviación} 
 +$$
  
  
-2a Crear df con lista de cilindradas y precio 
-2b Crear una gráfica  
  
-Cargar un df desde kaggle con tiempos  +==== Ejercicio 3.C ==== 
-mostrar el nº de filas y el nº de features +Usando la función ''plot_metrics'' muestra las gráficas de las pérdidas por épocas de las siguientes redes neuronales para el DataFrame de las flores:
-mostrar el nombree de las columnas que tiene +
-ver los tipos de datos +
-renombrar columna a target +
-ver los valores que son null +
-poner una de las columnascon null a la media +
-borrar las filas de las columnas con null  +
-crear una nueva columna de fecha +
-ver los datos único de laguna columna de "label", tansformar esa columna de label a números+
  
 +^  Nº Neuronas en cada capa  ^
 +|  2,4,2, |
 +|  4,8,4, |
 +|  8,16,8, |
 +|  4,8,4,2, |
 +|  8,16,8,4, |
 +|  16,32,16,8, |
 +|  32,64,32,8, |
 +|  64,128,64,8, |
 +|  8,16,32,64,32,16,8, |
  
-4 Crear df con iris +Pero para cada tipo de red ,deberás entrenarla 3 veces distintas y obtener resultado distintos con: 
-4b kde de la primera columna +    * Los datos originales 
-4c funcion de la gráfica +    * Los datos normalizados 
-4b Hacer las gráficas de KDE de todos por índice y poniendo el nombre+    * Los datos estandarizados
  
 +Además:
 +  * Deberás mostrar los 9 subplots en la  disposición de 9x3 (9 filas y 3 columnas)
 +    * En la primera columna se mostrarán el resultado de entrenar la red con los datos originales
 +    * En la segunda columna se mostrarán el resultado de entrenar la red con los datos normalizados
 +    * En la tercera columna se mostrarán el resultado de entrenar la red con los datos estandarizados
 +  * El título de cada subplot:
 +    * En la primera columna se mostrarán nº de neuronas por capa y el texto "originales"
 +    * En la segunda columna se mostrarán nº de neuronas por capa y el texto "normalizados"
 +    * En la tercera columna se mostrarán nº de neuronas por capa y el texto "estandarizados"
  
 +¿Hay diferencias al usar los datos normalizados o estandarizado? ¿Cual es mejor y peor? ¿Las ventajas son las mismas independientemente de la red?
  
  
-4a:Repetir ejercicio del tema de numpy con los datos y guardarlo en csv 
-4b:Cargar los datos y mostrar los datos 
  
-5a:Repetir ejercicio del tema de gráficas de history con los datos y guardarlo en csv 
-5b:Cargar los datos y mostrar los datos 
clase/iabd/pia/1eval/tema05.1643031641.txt.gz · Última modificación: 2022/01/24 14:40 por admin