josprimen / TFG

Aplicación de redes Long Short-Term Memory para predicción de la calidad de la oliva en campaña. TFG para el grado Ingeniería Informática Tecnologías Informáticas en la Universidad de Sevilla. / Long Short-Term Memory nets application for predicting the quality of the olive in the field. TFG for the Computer Engineering degree Computer Technologies at the University of Seville.
0 stars 0 forks source link

Uso de entorno, proyectos de prueba. #4

Closed josprimen closed 4 years ago

josprimen commented 5 years ago

Realización de algunos proyectos básicos con el entorno para aprender a usarlo y adquirir facilidad.

josprimen commented 5 years ago

Enlaces:

josprimen commented 5 years ago

Con el tutorial del primer punto hemos podido saber cual es la secuencia de uso de la librearía keras para crear una red neuronal con esta.

Con el tutorial del segundo punto hemos creado nuestra primera red neuronal (compuerta XOR), hemos aprendido la forma secuencial, a añadir capas con nodos definidos, compilar, entrenar y ver resultados. Ademas, hemos aprendido a guardar un modelo entrenado y a cargarlo más tarde.

josprimen commented 5 years ago

He tratado de modificar la red neuronal hecha para XOR para predicción de números binarios de cuatro dígitos a decimal. Nos encontramos con un problema de representación, gran diferencia entre números vecinos como el 7 y 8. El uso de Código Gray podría ser una posible solución.

josprimen commented 5 years ago

Trabajando en un nuevo ejemplo propuesto en la documentación de Keras relacionado con IMDB.

josprimen commented 5 years ago

Preparado el código referente a los datos.

josprimen commented 5 years ago

Preparado el código del modelo secuencial y su compilación. Añadidas 2 capas de 16 nodos y una capa de salida con un nodo.

PD: En paralelo al proyecto se está realizando una memoria con explicaciones extendidas, aprendizaje y desarrollo del código.

josprimen commented 5 years ago

Realizada la parte de código de entrenamiento y pruebas. En el ejemplo junta las dos partes, pero así no funcionaba y decidí separarlas, como en los demás ejemplos realizados. La ejecución ha sido exitosa.

josprimen commented 5 years ago

Buscando información para conectar Pycharm con Github y poder hacer push del código al respositorio actual.

Enlaces:

Pasos necesarios:

  1. Instalación de git en el equipo.
  2. En pycharm File>Settings>Version Control>git y añadir el pat del git.exe. En mi caso C:\Program Files\Git\bin\git.exe. OJO: se encuentra en la carpeta bin.
  3. En pycharm File>Settings>Version Control>github iniciar sesión con tu cuenta de github
  4. En el menú principal clonar el repositorio sobre el que vamos a querer trabajar dándole a VSC>Checkout From Version Control>git y en el diálogo que se abre elegir o añadir la URL del repositorio y aceptar.

Problemas encontrados: Había seleccionado git-cmd.exe en lugar de git.exe ya que no se encontraba en la ruta que especificaban los tutoriales.

josprimen commented 4 years ago

Tipos de algoritmos

josprimen commented 4 years ago

Normalizar datos ( https://stats.stackexchange.com/questions/70801/how-to-normalize-data-to-0-1-range )

Si tenemos Y que es una matriz de tamaño n filas y m columnas Y.shape devuelve (n,m) array = geek.arange(8) te crea un array del 0 al 7 array = geek.arange(8).reshape(2, 4) te crea una matriz de 2 filas y 4 columnas con ese array [[0 1 2 3] [4 5 6 7]]

Para tener los mismos números aleatorios hay que usar una semilla. Ejemplo:

import numpy as np
np.random.seed(8)
np.random.rand(3)
Out[4]: array([0.8734294 , 0.96854066, 0.86919454])
np.random.rand(3)
Out[5]: array([0.53085569, 0.23272833, 0.0113988 ])
np.random.seed(8)
np.random.rand(3)
Out[7]: array([0.8734294 , 0.96854066, 0.86919454])

ESTO VALE PARA TENER SIEMPRE EL MISMO VECTOR DE PESOS ALEATORIOS FINAL Y OBTENER LOS MISMO RESULTADOS EN LAS EJECUCIONES.

Con arrays de numpy si pones conjunto[2:4] te devuelve los arrays que estan en esas posiciones y si pones conjunto[2,0] te devuelve el número que está en la posición 0 del array 2. En este caso solo tenemos un numero en el array, por lo que si ponemos algo que no sea un ,0 nos va a dar error de index.

conjunto[2:6]
Out[75]: 
array([[132.],
       [129.],
       [121.],
       [135.]], dtype=float32)
josprimen commented 4 years ago

TRATAMIENTO DE DATOS drop zeros ->df.loc[~(df==0).all(axis=1)]

drop empty rows -> df.loc[~(df==' ').all(axis=1)]

GUARDAR DATOS TRATADOS EN UN CSV dataset.to_csv('pollution.csv')

josprimen commented 4 years ago

AL HACER ASIGNACIONES NO SE ESTÁ HACIENDO UNA COPIA DEL OBJETO, POR LO QUE SI CAMBIAS LO ASIGNADO, CAMBIA EL VALOR DE LA VARIABLE.

rendimiento = datos[:,0]
acidez = datos[:,1]
datos[:,0] = acidez

AHORA RENDIMIENTO SERÍA IGUAL A LA ACIDEZ

Solución: rendimiento = np.copy(datos[:,0])

josprimen commented 4 years ago

Pasar conjunto de datos en JSON a csv With the pandas library, this is as easy as using two commands!

pandas.read_json() To convert a JSON string to a pandas object (either a series or dataframe). Then, assuming the results were stored as df:

df.to_csv()