Skip to content

ZibraMax/Patinetas

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Requerimientos

  • ArcGIS Pro>=2.4 con extensiones.

  • Toolbox propia de creación de dataset (opcional).

  • Python>=3.7.5

  • GraphViz

  • Pydot

    Se requieren las siguientes extenisones

    • Numpy pip install --upgrade numpy
    • Matplotlib pip install --upgrade matplotlib
    • Pandas pip install --upgrade pandas
    • tqdm pip install --upgrade tqdm
    • Seaborn pip install --upgrade Seaborn
    • H2o (Requiere java jdk versión 8 a versión 14) pip install --upgrade h2o
    • TensorFlow (v=2.4.0) pip install --upgrade tensorflow==2.4.0

    Para instalar las librerías puede usarse anaconda o pip.

Información Disponible:

La siguiente información está en la geodatabase.

[Tipo de información] (Atributo, tipo)

  • Densidad Poblacion [Vector Polygon]
  • DEM con el que se puede calcular $\Delta z$. [Raster]
  • Uso de suelo de Metronamica [Raster]
  • Densidad de Empleo [Raster] (DensEmpkm, float)
  • Dataset de viajes de patinetas [Table, CSV] (bogota_data.csv)
    • Este dataset solos sirve para calcularcuantos viajes se realizan de celda de estudio a celda de estudio.
    • Se podría calcular distancia.
    • Se podría calcular la duración promedio en minutos, esto puede ser un segundo output.
  • Celdas de estudio [Vector Polygon] (geohashs_bogota)
  • Red_Walkability [Vector Lines]
    • Ancho Calle (Ancho, double)
    • Carriles Calle (Carriles, int)
    • Si hay SITP (SITP, bool)
    • Velocidad (vel, double)
    • Flujo (flujo, double)
    • Si hay andenes (Pres_anden, bool)
    • Congestion (congestion, double)
    • Estrato (estrato, int)
    • Estado de la via (Est_via,double)
    • De_XXXXX Densidades de cosas importantes. DOUBLE
  • Segmentos Viales SDP [Vector Polygon]
    • Área de los andenes (Area_And, double)

Información que no se que es:

  • Segmentos Viales SDP [Vector Polygon]
    • Todos los demas atributos que no son Area_And.

Dataset

Para generar los pares Origen Destino se parte de los datos de datos_bogota.csv. En este caso se agregan las entradas de dichos datos en los archivos OD y ODLW. Estos archivos están en la carpeta Train Data RNN.

El archivo OD.csv contiene una matriz origen destino a nivel de geohash mientras que el archivo ODLW.csv contienen la misma matriz ignorando aquellos pares donde los viajes sean 0.

La creación de estos archivos se lleva a cabo usando el script crearOD.py

En total se cuentan con +10M de pares Origen Destino donde solo 164K son distintos de 0.

Las variables que se usarán para el primer modelo son:

  • P significa presencia [int]

  • D significa distancia [double]

  • A significa porcentaje de area en celda [double]

  • N significa número [int]

  • PC Promedio en celda

  • Usos suelo [int]

  • Dens Pob [double]

  • Dens Job [double]

  • Flujo vehicular PC

  • Velocidad PC

  • Congestión PC

  • Densidad Intersecciones

  • Densidad de delitos PC

  • Árboles N

  • Farolas N

  • Estrato [int]

  • CAI D

  • CAI P

  • CBD D

  • TM D

  • Parque D

  • Parque P

  • Puentes peatonales P

  • Puentes vehiculares P

  • SITP

  • "Densidad"

  • Manzana A

  • Separador A

  • Ciclo rutas A

  • Calzada TM A

  • Calzada peatonal A

  • Anden A

  • Calzada Mixta A

  • Vias P/D

  • Elevación [double]

  • Iluminación [double]

Modelos de Python

Random Forest

Support Vector Machine

Redes Neuronales

Conversación con JP (8/5/2021):

En principio no hay razones para usar redes convolucionales y el problema parece "fácil". Lo importante del problema es orientar la red a UN SOLO OUTPUT, ya que esto hace que el entrenamiento sea más rápido.

Par el entrenamiento se puede usar el método de bisección empezando con el número de neuronas igual al número de inputs (xl) y terminando con 500 veces el número de inputs (xu). Lo mejor para este tipo de modelo es usar el RMSE como loss function. Esto permite tener una unidad para saber que tan lejos se está.

A pesar de que JP dice que con densas puede ser suficiente, sigo pensando que una ResNet puede tener mejores resultados. Esto se decidirá después.

Para el entrenamiento puede ser muy útil usar Dropout porque son muchas variables, eso puede mejorar la generalización del modelo.

El número de capas todavía es un misterio así como la función de activación.

Modelo 1:
  • Modelo con 5x neuronas/capa con función ReLu.
  • 5x capas.
  • Batch Size de 100.
  • Optimizador: Adam.
  • RMSE,MAE.
  • 80%/20% Train/val.

Este modelo ya esta programado en el archivo train.ipynb

Si se usa Visual Studio Code, en la carpeta .vscode se encuentran una serie de archivos que automatizan los procesos de compilado y correr modelos.