Predicción de acciones en la bolsa con PYTHON (tutorial redes LSTM)

Поділитися
Вставка
  • Опубліковано 8 сер 2019
  • 🔥🔥Academia Online🔥🔥: cursos.codificandobits.com/
    🔥🔥Asesorías y formación personalizada🔥🔥: www.codificandobits.com/servi...
    En este quinto video de la serie "Redes Neuronales Recurrentes" veremos cómo implementar, paso a paso, una red LSTM que permita predecir el valor que tendrá en el futuro una acción en la bolsa de valores.
    Descarga el código fuente en este enlace: www.codificandobits.com/blog/...
    🔴 ** VISITA WWW.CODIFICANDOBITS.COM **
    En el sitio web encontrarán artículos y podrán descargar material útil para el desarrollo de aplicaciones de Machine Learning y Ciencia de Datos. También podrán ponerse en contacto conmigo si están interesados en servicios de formación, charlas o asesorías... Y muy pronto podrán acceder a los cursos online que estoy preparando.
    🔴 ** LOS DEMÁS VIDEOS DE LA SERIE **
    🎥 Introducción a las Redes Neuronales Recurrentes: • Introducción a las Red...
    🎥 Redes Neuronales Recurrentes: Explicación Detallada: • Redes Neuronales Recur...
    🎥 Generación de texto con Redes Recurrentes en Python (tutorial): • GENERACIÓN DE TEXTO co...
    🎥 ¿Qué es una Red LSTM?: • ¿Qué es una red LSTM?
    🔴 ** ÚNETE A CODIFICANDO BITS Y SÍGUEME EN MIS REDES SOCIALES **
    ✅ Sitio web: www.codificandobits.com
    ✅ Suscríbete: ua-cam.com/users/codificando...
    ✅ Facebook: / codificandobits
    ✅ Instagram: / codificandobits
    ✅ Twitter: / codificandobits
    🔴 ** ACERCA DE MÍ **
    Soy Miguel Sotaquirá, el creador de Codificando Bits. Tengo formación como Ingeniero Electrónico, y un Doctorado en Bioingeniería, y desde el año 2017 me he convertido en un apasionado por el Machine Learning y el Data Science, y en la actualidad me dedico por completo a divulgar contenido y a brindar asesoría a personas y empresas sobre estos temas.
    🔴 ** ACERCA DE CODIFICANDO BITS **
    El objetivo de Codificando Bits es inspirar y difundir el conocimiento en las áreas de Machine Learning y Data Science.
    #machinelearning
  • Наука та технологія

КОМЕНТАРІ • 219

  • @codificandobits
    @codificandobits  3 роки тому

    🔥🔥Academia Online🔥🔥: cursos.codificandobits.com/
    🔥🔥Asesorías y formación personalizada🔥🔥: www.codificandobits.com/servicios/

    • @orionsonny3220
      @orionsonny3220 2 роки тому

      I know it is kind of randomly asking but do anybody know a good place to stream newly released tv shows online?

    • @gunnarvance4385
      @gunnarvance4385 2 роки тому

      @Orion Sonny flixportal =)

    • @orionsonny3220
      @orionsonny3220 2 роки тому

      @Gunnar Vance thank you, signed up and it seems to work :) I really appreciate it!!

    • @gunnarvance4385
      @gunnarvance4385 2 роки тому

      @Orion Sonny Happy to help xD

    • @ReprogramacionMental348
      @ReprogramacionMental348 2 роки тому

      ¿Puedes pasar los artículos que leíste? En especial me interesa que modelo estás utilizando con ese code. Algún articulo científico que me brindes, te lo agradecería

  • @manuelrincon4229
    @manuelrincon4229 4 роки тому +2

    Excelente canal, felicitaciones. La información muy clara y precisa.

  • @elingenierodelaweb
    @elingenierodelaweb 4 роки тому +2

    Muy bueno, lo que andaba buscando mas que todo en la parte donde explica que hace cada linea...

  • @joapen
    @joapen 3 роки тому

    muchas gracias Don Miguel, muy didáctico y claro.

  • @JuanPedrodeLeon_uy
    @JuanPedrodeLeon_uy 3 роки тому +1

    Muchas gracias por los datos y muy buena tu explicacion!!!!

  • @carlosgines1518
    @carlosgines1518 3 роки тому

    Muchas gracias! Esta muy bien explicado

  • @JulianBejarano
    @JulianBejarano 3 роки тому +1

    Que buena explicación, gracias por el aporte

  • @saytecschannel2064
    @saytecschannel2064 4 роки тому +3

    Excelente tu aporte amigo, gracias por tu gran esfuerzo de compartir tus conocimientos con el mundo.

  • @miguelacosta707
    @miguelacosta707 4 роки тому +1

    Hola, muy interesante el canal. Muchas gracias por el trabajo que haces. Saludos.

    • @codificandobits
      @codificandobits  4 роки тому

      Hola Miguel, gracias por tu comentario. Un saludo!

  • @rodrigocasamayou7898
    @rodrigocasamayou7898 4 роки тому +2

    Genial! Muchas gracias! Es un trabajo muy bueno el que estas haciendo en el canal.

  • @peralser
    @peralser 3 роки тому

    Excelente video. Muy claro. Gracias

  • @oscarriojas2023
    @oscarriojas2023 4 роки тому +1

    Genial!!! Como todos tus vídeos

  • @progra_kun4331
    @progra_kun4331 4 роки тому +2

    hermano gracias de verdad estas llenando lo que hasta ahora era un vacio para los hispanoablantes que estudiamos el machine learning las redes recurrentes no tienen gran explicacion en la red por lo que uno se ve frenado a la hora de implementarlas por no poder entenderlas de modo que agradezco sinceramente tu trabajo

  • @wilowbrown1837
    @wilowbrown1837 4 роки тому

    Muchas gracias por tu contribución, Excelente trabajo. (Nuevo subscriptor)

    • @codificandobits
      @codificandobits  4 роки тому

      A ti por seguir el canal. Un saludo y bienvenido!

  • @josemanuelmanesridaura8874
    @josemanuelmanesridaura8874 4 роки тому +1

    Excelente Canal. Gracias.

  • @Nando7695dev
    @Nando7695dev 3 роки тому

    Excelente!!!!!

  • @user-ju3nk6zf5t
    @user-ju3nk6zf5t Рік тому

    Hola, muy clara la explicación muchas gracias. ´Para predecir más de 1 dato futuro despues de entrenada la red, se repite todos los pasos con todo el dataseet y como se ajustarian los parámetros para que por ejemplo la predicción se a 18 meses?

  • @sunday-thequant8477
    @sunday-thequant8477 4 роки тому

    Nuevo suscriptor amigo!!!

  • @vozdominicana
    @vozdominicana 4 роки тому +1

    Excelente.

  • @henry-db
    @henry-db 3 роки тому

    Genial vídeo, felicitaciones

    • @codificandobits
      @codificandobits  3 роки тому

      :) gracias por tu comentario Henry. Un saludo!

  • @jucescab
    @jucescab 3 роки тому +2

    Muchas gracias por esas magníficas explicaciones!!
    Tengo una consulta, cómo se podría hacer el generador de nombres de dinosaurio con esta arquitectura (LSTM) ?

  • @jorgevalero4819
    @jorgevalero4819 3 роки тому +1

    Felicitaciones Miguel. Excelente serie de videos. Tu explicacion fue igual o superior a la de Ava Soleimany del MIT. Gracias por compartir tu valioso conococimiento.

    • @codificandobits
      @codificandobits  3 роки тому +1

      Gracias por tu comentario Jorge. No he visto el video de Ava Soleimany, pero me causa curiosidad.
      Un saludo!

  • @paulalexander796
    @paulalexander796 Рік тому

    Gracias :)!!!

  • @NOnecesitosuscriptores
    @NOnecesitosuscriptores 4 роки тому +1

    sr.sotaquira
    tiene cara y cuerpo
    un placer conocerle,hace fácil (o casi) con sus explicaciónes.
    series de cultura y gracias por los vídeos

    • @codificandobits
      @codificandobits  4 роки тому +1

      ja, ja, ja Feli gracias por tu comentario. Sí, los temas a veces no son fáciles pero hago lo posible para explicarlos de la forma más sencilla. Un saludo!

  • @luisjaimeestudioytrabajo7577
    @luisjaimeestudioytrabajo7577 3 роки тому

    Gran video muy interesante

  • @carlocarlo1635
    @carlocarlo1635 2 роки тому

    muchas gracias por el video , pero de que sirve tener los datos que sean cercanos si no predice los 10 siguientes precio o X precios?

  • @ferminmartinez8730
    @ferminmartinez8730 Рік тому +1

    Hola, la gráfica del minuto 4:09 tiene un desfase. Si corrigen la curva azul y la desplazan a la derecha verán que ambas gráficas se solapan.

  • @kevinalejandronaranjoreyes72
    @kevinalejandronaranjoreyes72 3 роки тому

    hola gracias por este contenido tan bueno. Como puedo hacer para generar mas de 1 predicción en el futuro por ejemplo 10 pasos al futuro

  • @joalar33
    @joalar33 3 роки тому

    Hola, suscrito y muy interesante el canal y para verlo varias veces, veo que se hace todo el proceso y el ultimo gráfico no aparece en el código, cuando veo el set_validacion y la prediccion su forma me resultan 2 arrays que tienen diferente size, una de 251 filas y otro de 191 filas, me puedes ayudar y decirme como se puede ordenar esto en dos columnas para gratificarlo??
    Gracias

  • @porchietto
    @porchietto 4 роки тому

    Muy buen Video

  • @camilohernandez2356
    @camilohernandez2356 2 роки тому

    hola buenos dias tengo una pregunta que versión de python se utilizo es que estoy desarrollando el ejercicio en anaconda y tengo un conflicto con las versiones

  • @ricardocepedacepeda8971
    @ricardocepedacepeda8971 Рік тому

    Excelente video, pero me ciónqueda una duda cuando usas el modelo, poruqe no especificas una funcion de activación dentro de la red, o acaso queda alguna por defecto?

  • @jairocm4078
    @jairocm4078 4 роки тому

    Excelente serie de videos, creo que para completar la serie te faltaría ejemplos considerando la no estacionariedad. Seria muy interesante, saludos.

    • @codificandobits
      @codificandobits  4 роки тому +1

      Gracias Jairo por tu sugerencia. La voy a tener en cuenta para complementar esta serie. Saludos!

  • @marcelocanetta1892
    @marcelocanetta1892 4 роки тому

    Hola. Gracias por el video ! Tengo un problema al cargar la linea6 >> from keras.models import Sequential
    ...Failed to load the native TensorFlow runtime.
    Gracias y Saludos

    • @codificandobits
      @codificandobits  4 роки тому

      Hola Marcelo. Usualmente este tipo de errores se deben a que keras (o tensorflow) no están en el "PATH" de Python. ¿Me podrías enviar un pantallazo completo a codificandobits@gmail.com para mirar más en detalle?
      ¡Un saludo!

  • @ivandariojaramillotorres4917
    @ivandariojaramillotorres4917 3 роки тому

    Tienes unos vídeos excelentes. Me han ayudado mucho a entender mejor los conceptos de las redes LSTM.
    Tengo una pregunta. Luego que tienes desarrollado el modelo ya entrenado, como lo probarias con nuevos datos para ver su performance?
    Digamos testearlo con un nuevo archivo .csv del valor de las acciones.

    • @icsacoach
      @icsacoach 5 місяців тому

      Tengo la misma pregunta, como implementarlo para predecir en momentos que no estás en el dataframe

  • @javierdelpozovelazquez4296
    @javierdelpozovelazquez4296 4 роки тому

    Buenas, antes de nada muchas gracias por el vídeo. Me gustaría realizarte una pregunta, si lo que quisiera es la predicción del dato 121 en lugar del dato 61... sería posible?

    • @codificandobits
      @codificandobits  4 роки тому +1

      Hola Javier. En este caso deberías modificar el tamaño de la secuencia presentada al modelo durante el entrenamiento: en lugar de usar 60 datos debes usar 120. Así, una vez hecho el entrenamiento, podrás predecir el dato 121. Un saludo!

  • @sergioaltamirano6411
    @sergioaltamirano6411 4 роки тому

    Hola buenas noches, primero que todo agradecer todo el material que has subido a tu canal, esta super bien explicado y de manera sencilla, super recomendando a las personas que están integrándose a este mundo.
    En lo particular tengo una duda, por ejemplo si quisiera predecir valor de las acciones de apple y para mejorar esta predicción me gustaría adicionar covariables como por ejemplo valor del dolar, petroleo, etc. ¿Cómo debería ser el planteamiento?. ¿Tienes algún material de lectura que me ayude abordar este problema?.
    Nuevamente muchísimas gracias y felices fiestas.

    • @codificandobits
      @codificandobits  4 роки тому

      Hola Sergio, gracias por tu comentario!
      Un saludo!

  • @Felipe16ification
    @Felipe16ification 4 роки тому +1

    Hola! Excelente canal y saludos desde Chile! Estaba viendo tus videos del canal y me surgió la siguiente duda, para poder predecir los precios de las acciones futuros en base a tu opinión/conocimiento que sería mejor MLP o LSTM ? Gracias de antemano y saludos!

    • @codificandobits
      @codificandobits  4 роки тому

      Hola Felipe. Definitivamente LSTM, porque el perceptrón multicapa no está en capacidad de analizar secuencias (como por ejemplo la variación de las acciones en el tiempo). Aunque creo que otra estrategia pueden ser las redes transformer, una nueva arquitectura que resulta ser mucho más prometedora que las redes LSTM. Sobre estas redes publiqué un video recientemente, acá te dejo el enlace por si te interesa: ua-cam.com/video/Wp8NocXW_C4/v-deo.html

    • @Felipe16ification
      @Felipe16ification 4 роки тому

      @@codificandobits Muchas gracias por tu respuesta! un abrazo cordial.

  • @elingenierodelaweb
    @elingenierodelaweb 4 роки тому

    También si pudieras hacer un video de un ejemplo manejando LSTM con señales de actividad humana por allí esta un git de ejemplo pero es de unos años usando la data oportunity

    • @codificandobits
      @codificandobits  4 роки тому

      Sí, ese es un video que espero publicar más adelante.

  • @omalm1782
    @omalm1782 4 роки тому

    Hola!
    No he entendido lo de batch_size=32. No se habían tomado bloques de 60 datos?
    Gracias y un saludo!

    • @atruismoti2402
      @atruismoti2402 11 місяців тому

      Es el tamaño de cada uno de los bloques

  • @benjaminbianchi1804
    @benjaminbianchi1804 4 роки тому +1

    Excelente video ! Una consulta como trabaja específicamente la función "inverse_transform"?

    • @codificandobits
      @codificandobits  4 роки тому +3

      Hola Benjamín. Cuando se realizó el entrenamiento se utilizó una transformación que garantizaba que los datos estuviesen en el rango 0 a 1 (línea 42). Con esto se garantiza la convergencia del algoritmo de entrenamiento.
      Sin embargo, los valores de las acciones en realidad no están en ese rango, así que al hacer la predicción es necesario hacer el proceso inverso para que la predicción de estos valores esté en el rango real. Esto es precisamente lo que hace inverse_transform.
      Un saludo!

    • @benjaminbianchi1804
      @benjaminbianchi1804 4 роки тому

      @@codificandobits Perfecto muchas gracias!!!!

  • @elingenierodelaweb
    @elingenierodelaweb 4 роки тому +2

    Si pudieras hacer un video explicando funciones especificas de tensorflow y keras segun y otros terminos las que he anotado: Softmax, Sigmoid, Acuracy, Dense(), Sequential(), ModelDataPoint(), Batch, BatchSize, One-hot, Metrics, Droput, CuDNNLSTM, BatchNormalization, TensorBoard(), .Evaluate(), .Fit(), input_shape, keras.optimizer.Adam, K-fold, ReturnSeq, df.shift(), preprocessing.scale(), compile(), reshape()

    • @codificandobits
      @codificandobits  4 роки тому +3

      Wow! Es un listado bastante grande...
      Algunos de estos temas ya los he cubierto en otros videos:
      - Dense, Sequential, BatchSize, fit, input_shape, compile: todos ellos los reviso en el tutorial introductorio a Keras. Acá está el enlace: ua-cam.com/video/F6oKf06WmnM/v-deo.html
      - Sigmoid: en el video de regresión logística puedes encontrar más información. También en el video de las funciones de activación. Acá los dos enlaces: ua-cam.com/video/lFODTDO8mMw/v-deo.html, ua-cam.com/video/eHOHIgxRoHE/v-deo.html
      - Softmax: en los videos sobre regresión multiclase encuentras detalles. Los enlaces: ua-cam.com/video/IjlzULcQdvk/v-deo.html, ua-cam.com/video/MuPh3h7hwb4/v-deo.html
      Sobre los otros temas: muchas gracias por tu comentario. Ya tomé nota de estos temas, y poco a poco iré subiendo videos donde hablaré en detalle de los mismos.
      Un saludo!

    • @elingenierodelaweb
      @elingenierodelaweb 4 роки тому +1

      codificandobits muchas gracias iré viendo, pasa que me llama mucho la atención redes neuronales recurrentes LSTM y convolucionales e hiperparametros y he anotado varías funciones para entender primero el abc de las funciones para poder modificar algoritmos según lo que necesite y veo que esto es como aprender a leer en mi caso aprendí el abcedario luego fui uniendo letras con letras para armar palabras y así esto IA algunas cosas son mecánicas por lo que veo hay funciones con más parámetros para adaptar

  • @juanfelipelondono6705
    @juanfelipelondono6705 4 роки тому +1

    Hola! De antemano muchas gracias por compartir el conocimiento, me ha servido de mucho y queria consultar sobre una duda. Al realizar la predicción esta arroja una grafica del valor de la accion por un lapso en el tiempo en el eje X, sin embargo en este eje solo muestra numeros y no fechas. Alguien me podria explicarme por favor?

    • @codificandobits
      @codificandobits  4 роки тому +3

      ¡Hola Juan Felipe, y gracias por tu comentario!
      Los números en el eje "x" de la gráfica de predicción que obtuviste se refieren a días. Como la predicción se hizo para el 2017, el número 2 se refiere al 2º día de 2017, el número 10 al décimo día y así sucesivamente.
      ¡Un saludo!

    • @juanfelipelondono6705
      @juanfelipelondono6705 4 роки тому

      @@codificandobits Entendido, mil gracias!

  • @cristhiancastrochavez5962
    @cristhiancastrochavez5962 4 роки тому

    Muy bueno, muchas gracias! Una pregunta, esto también serviría para predecir valores futuros? Osea por encima de la última fecha registrada? Gracias!

    • @codificandobits
      @codificandobits  4 роки тому +1

      Claro que sí Cristhian, de hecho esa es precisamente la idea, que el modelo toma como base valores pasados para predecir valores futuros.
      Un saludo!

    • @cristhiancastrochavez5962
      @cristhiancastrochavez5962 4 роки тому

      @@codificandobits gracias por tu respuesta. Miguel tengo una duda al momento de predecir valores futuros, incluso más allá del set de entrenamiento. Te puedo mandar un email? Gracias!!

    • @wilowbrown1837
      @wilowbrown1837 3 роки тому

      @@cristhiancastrochavez5962 . Hola, buenas tardes. Pudiste resolver el problema, de como predecir valores futuros mas allá del set de entrenamiento?
      No sabes si hay algún parámetro que se pueda modificar para lograrlo?. Gracias desde ya.

  • @willianalcoser845
    @willianalcoser845 4 роки тому

    Saludos, muy bonito el ejemplo, pero como puedo predecir valores al futuro a partir de estas lineas de código ?. De antemano, gracias

    • @codificandobits
      @codificandobits  4 роки тому +2

      Hola Willian. En el tutorial precisamente se explica cómo realizar esta predicción. Te sugiero revisar del minuto 3:54 en adelante. Un saludo!

  • @arielpenalver2531
    @arielpenalver2531 4 роки тому

    Muy buena explicación...estoy trabajando en un proyecto de DL para la escuela y tengo 2 o 3 dudas. Existe alguna forma de poder enviarte un doc con algunas imagenes y las dudas, le des un vistazo y puedas ayudarme??? Salu2

    • @codificandobits
      @codificandobits  4 роки тому

      Claro Ariel, no hay inconveniente. codificandobits@gmail.com. Un saludo!

  • @francoozuna8449
    @francoozuna8449 4 роки тому

    Hola como hago si quiero agregar otras variables que influyen en los valores pasados, dónde las agrego? y una vez agregadas puedo predecir solo los valores futuros de la bolsa pero estos valores ya van a tener en cuenta la evolución de las otras variables, muchas gracias excelentes videos, saludos desde Paraguay

    • @codificandobits
      @codificandobits  4 роки тому

      Hola Franco y qué buena pregunta.
      Las variables adicionales las puedes incluir en el set de datos original (archivo .csv que encuentras en Github). Posteriormente, durante el pre-procesamiento (líneas 28-61 del código en Github) debes modificar el código para incluir los nuevos datos en los sets de entrenamiento y validación. Con esto debería ser suficiente para entrenar la red LSTM y hacer que sea capaz de tener en cuenta las nuevas variables para hacer la predicción.
      Un saludo!

  • @elsupermath3844
    @elsupermath3844 3 роки тому +3

    Esta red tiene un gran problema, cuando pongo el time_step entre 1 y 20 logra predecir la grafica a la perfeccion, parece que hace overfiting

  • @martintusco3129
    @martintusco3129 2 роки тому +2

    Hola. Buen video explicado LSTM y series temporales. Solo que finalmente el "for" finalmente no hace predicción del futuro. Ya que ingresas los mismo datos del 2017 al modelo. Debieras ingresarle los 60 últimos datos de "entrenamiento" para que comience a predecir el valor 61 y más pero del 2017. Y el conjunto de validación solo se ocupa para comparar la predicción y no para usarla en ña funcion predict. Por eso no se puede predecir para nuevos tiempos con este algoritmo. Gracias de todas maneras por su video.

    • @matiasfernandez6180
      @matiasfernandez6180 2 роки тому

      o sea que en definitiva no sirve?. donde puedo estudiar esto, me interesa como para meterme en este mundillo.

    • @martintusco3129
      @martintusco3129 2 роки тому

      @@matiasfernandez6180 Si sirve. pero para darle una aplicación a algún caso real, no se describe en el video. Se debe hacer un ciclo FOR diferente que prediga el futuro de la variable Serie temporal, que no está en este video.

    • @cristianjuarez1086
      @cristianjuarez1086 2 роки тому

      Se trataria de un FOR con el rango "m" (tamaño del set)?

  • @payo1167
    @payo1167 4 роки тому +3

    Si quisiera predecir los valores para el primer mes 2018... Con ese mismo dataset. Como lo hiciéramos? Ya que en ese escenario no conocemos ningún dato de entrada

    • @codificandobits
      @codificandobits  4 роки тому

      ¡Hola Rafael! En principio se podrían usar las predicciones hechas para el 2017, pero lo ideal es contar con datos más recientes, al menos del año anterior, para lograr que la predicción se acerque más al comportamiento real.
      Si la predicción la hago no sobre datos reales sino a partir de predicciones anteriores, muy probablemente con el tiempo la diferencia entre la predicción y el valor obtenido va a comenzar a ser cada vez más grande.
      ¡Un saludo!

  • @na81cho
    @na81cho 4 роки тому

    Con acciones argentinas compense hace ? Muy bueno el video

    • @codificandobits
      @codificandobits  4 роки тому +1

      Hola Juan. En ese caso debes buscar el set de datos con el histórico del comportamietno de estas acciones; luego debes reentrenar el modelo y verificar qué también logra hacer la predicción. Un saludo!

  • @loslittlelambo
    @loslittlelambo 4 роки тому +2

    Si actualizo el database, podria prevenir con su codigo base el dia de mañana de apple, porque mas reciente, mas precision quisiera saber si se puede hacer, Gracias (:

    • @codificandobits
      @codificandobits  4 роки тому

      En teoría es posible, claro que sí. Lo único que se requiere es lograr acceder a esta base de datos actualizada. Un saludo!

  • @Gatolailo
    @Gatolailo 4 роки тому

    hola, se hace en el orden de tu video? o en el orden en el que esta puesto el codigo?

    • @codificandobits
      @codificandobits  4 роки тому

      Hola Joaquín. Tanto el video como el código están en el mismo orden. Pero en el código encuentras más detalles, te sugiero usarlo (lo encuentras en Github, el enlace está en la descripción del video). Un saludo!

  • @srdonpitopocho1183
    @srdonpitopocho1183 4 роки тому

    Si coges varios valores puedes meter unos de rango 0 a +1 y otros de rango -1 a +1 por ejemplo? Se podría hacer eso?

    • @codificandobits
      @codificandobits  4 роки тому

      Hola! Lo ideal es que todos los valores estén normalizados al mismo rango, bien sea 0 a +1 ó -1 a +1 (pero no ambos). De lo contrario el entrenamiento no resultaría adecuado y el rango escogido influiría en la predicción obtenida.
      Un saludo!

  • @victorandresdelgadotrujill3044
    @victorandresdelgadotrujill3044 4 роки тому +1

    Esta super bueno el video, gracias por la informacion. sin embargo tengo una duda, el modelo en pantalla sirve para encontrar solo un valor futuro. como hago yo para predecir mas de un valor futuro? nota: trate cambiando el valor de la variable dim_salida = 3 y me arroja un erro. agradecería su respuesta

    • @codificandobits
      @codificandobits  4 роки тому +1

      Hola Víctor. En este caso debes generar uno a uno los datos de la predicción. Por ejemplo:
      - Iteración 1: ingresas los datos 1 al 60, y predices el dato 61
      - Iteración 2: ingresas los datos 2 al 61 (siendo el 61 la predicción anterior) y predices el dato 62
      - Iteración 3: ingresas los datos 3 al 62 (siendo el 62 la predicción anterior) y predices el dato 63
      y así sucesivamente!
      Un saludo!

    • @wariowadillo4139
      @wariowadillo4139 4 роки тому

      @@codificandobits tu solución en python como quedaría escrita?

  • @RunRun24h
    @RunRun24h 4 роки тому

    Excelente trabajo, todo muy claro y didáctico. Lo he podido replicar sin problema. Me ha sido de gran ayuda!!
    Mi duda surge en cuanto al poder de predicción de la arquitectura propuesta LTSM. Entiendo que los valores que predice la red para el dia siguiente se parecen bastante al valor real, pero no entiendo porque quedan tan lejos, ya sea en el conjunto de test como en el de entrenamiento.
    En el conjunto de test es normal, ya que dichos datos la red no los ha visto nunca, pero en el conjunto de entrenamiento el error, en mi opinión, debería ser más bajo.
    Me explico: con una predición tan sencilla como "el precio de mañana será el precio de hoy" creo que se obtiene menos error que con la predicción de la red LTSM, no solo en el conjunto de Test sinó también en el de entrenamiento. Llevo varios dias dandole vueltas a esto y no se donde puede estar el error conceptual, ya que con el conjunto de entrenamiento se ha hecho una optimización de minimos cuadrados, y teoricamente debería predecir mejor que "tomar el precio de hoy". Gracias por tu trabajo !!

    • @RunRun24h
      @RunRun24h 4 роки тому

      Añado que he hecho variaciones poniendo mas capas ocultas LTSM, también otras tipo DENSE, incluso he acortado las entradas en lugar de los 60 dias anteriores, a un solo dia, o sea hoy. En ningún caso he conseguido que el error de la red sea inferior al predictor sencillo del precio de hoy.

    • @parraduarte
      @parraduarte 4 роки тому

      Estoy totalmente de acuerdo. La predicción de esta red, en este ejemplo, es engañosa. Si fuera real, más de uno ya se habría hecho rico. Se dice que la mejor predicción para el día de mañana es la cotización de hoy. Y es que en este entorno, hay que distinguir lo que se llama serie de nivel y serie de diferencias. En la serie de nivel hay una alta autocorrelación. Es muy difícil que si hoy vale 1,220 mañana valga 987 y pasado mañana 1.829. Un modelo naif que prediga el valor de hoy (1.220) parecerá muy bueno cuando se muestre en la gráfica. Las diferencias son pequeñas. Pero el problema está sin resolver. Lo que hay que predecir es la serie de diferencias. Típicamente estas son incorreladas, y son casi imposible de pronosticar.

  • @ricardoancona9722
    @ricardoancona9722 3 роки тому +1

    excelente video, sin embargo me queda la duda de como se escoge el tamaño del batch, que fue 32 en este caso, y para el numero de neuronas

    • @pablolenoir4794
      @pablolenoir4794 3 роки тому +1

      Por prueba y error, vas probabdo y el que mejor te da te lo quedas

  • @facundopinela6842
    @facundopinela6842 3 роки тому +2

    Hola, como estas?
    Probé el codigo y no pareciera que es un entrenamiento real. Cuando pones time_step = 1 la IA copia el valor de la acción y no tiene sentido.

    • @Nahuel-Shisetsu
      @Nahuel-Shisetsu 3 роки тому +1

      Me pasó lo mismo, modifique el dataset poniendo información falsa para ver cómo resultaba la predicción y lo copió a la perfección.

  • @diegoroldanroldan5393
    @diegoroldanroldan5393 5 місяців тому

    Buen video estana viendo tu pagina y me gustaria estudiar contigo, te cuento que no se nada de programacion y ciencia de datos desde que modulo deberia empezar?

    • @codificandobits
      @codificandobits  2 місяці тому

      Hola! Deberías comenzar con el curso "Introducción a la Ciencia de Datos" y luego seguir con los cursos de programación en Python niveles básico, intermedio y avanzado. Un saludo!

  • @pablomendez3768
    @pablomendez3768 3 роки тому

    Espectacular, no se si hay un tutorial de Keras realizado por usted!

    • @pablomendez3768
      @pablomendez3768 3 роки тому

      @Lucca Cason Thanks for answer

    • @codificandobits
      @codificandobits  3 роки тому

      Hola Pablo. Sí, en el canal hay un video tutorial de Keras para principiantes. Un saludo!

  • @manueldenis730
    @manueldenis730 2 роки тому +1

    Que tal . Muy educativos tus videos. Quería preguntarte si conoses de alguna librería, plataforma... donde se pueda aprender sobre redes neuronales evolutivas.

    • @codificandobits
      @codificandobits  2 роки тому

      Hola Manuel. Aunque no la he usado, hay una librería en Python que se llama NEAT (github.com/CodeReclaimers/neat-python) para implementar este tipo de redes.
      Con respecto a bibliografía puedes buscar "evolutionary neural networks" en Google Académico y encontrarás artículos recientes sobre el tema. Un saludo!

    • @manueldenis730
      @manueldenis730 2 роки тому +1

      @@codificandobits Muchas gracias por la info👍🏻

  • @jorgetolosa623
    @jorgetolosa623 2 місяці тому

    hola exceñentr, como tendria que hqcer para pronosticar en vez de un dia 30 dias? si no es sencillo podrias hacer un video? estoy trabajando usando ARIMA y SARIMAx y quisiera poder compararlos en ese horizonte de 30 dias. gracias!!! por todo

    • @codificandobits
      @codificandobits  2 місяці тому

      Hola Jorge. Te sugiero el video de predicción univariada + multistep con Redes LSTM. Acá te comparto el enlace: ua-cam.com/video/TEzTfl_E-3o/v-deo.html
      Un saludo!

  • @santiagogongora5506
    @santiagogongora5506 3 роки тому

    Muchas gracias por el video. Ojala puedas responder la siguiente pregunta que nadie me ha podido ayudar. En el video vemos la validación del modelo, pero como hago para modelar los valores futuros. En este caso específico como hago para predecir los 30 días del mes de enero del 2018?. Que parte del código cambiarías para lograr predecir estos valores futuros? Esa parte no la he podido ver en ningún video.

  • @juliorueda7925
    @juliorueda7925 4 роки тому +1

    Como podría realizar una red neuronal LSTM que tenga varios datos de entrada, es decir, que no tome solo el máximo valor de la acción, sino también el mínimo, el valor de apertura y cierre y demás?

    • @codificandobits
      @codificandobits  4 роки тому +1

      Hola Julio y ¡qué buena pregunta!
      Esto se conoce como predicción multivariada (múltiples variables).
      En esencia se puede usar el mismo esquema que se muestra en el video, con una diferencia importante: en lugar de una sola característica (el valor máximo de la acción), cada dato del set de entrenamiento tendría cuatro características (máximo, mínimo, valor de apertura y de cierre). En todo caso la capa de salida seguiría igualmente generando un sólo valor: la predicción de la acción.
      Claro, es probable que con estos cambios la complejidad de la red cambie. Es decir que podría ser necesario agregar más capas ocultas y/o neuronas, y verificar durante el entrenamiento/validación cuál es el valor más adecuado para estos parámetros.
      ¡Un saludo!

  • @deividbotina961
    @deividbotina961 4 роки тому

    Hola excelente canal, he buscado muchas explicaciones de estos temas pero seguía con dudas, la metodología que usas para explicar es increíble, felicidades por el canal.
    Quisiera preguntar algo teórico referente a la arquitectura de una red LSTM. Supongamos que quiero filtrar señales de audio, tengo 10 señales y cada una dura entre 30 y 60 segundos, todas tienen tiempos diferentes. Para entrenar la red decido crear sub-muestras de las primeras 8 señales, pasando una ventana de tiempo de 5 segundos con un solapamiento de 1 segundo (esto lo hago para tener más datos y que la RED pueda aprender mejor), y así me quedan de las primeras 8 señales, digamos que 1000 sub-señales de 5 segundos. Mi pregunta sería, ¿existe una forma de realizar una predicción con las 2 señales de testeo (que duran digamos que 45 y 57 segundos respectivamente), sin necesidad de subdividirlas en segmentos de 5 segundos como hice en el entrenamiento?
    Muchas gracias.

    • @codificandobits
      @codificandobits  4 роки тому +1

      Hola Deivid, qué buena pregunta.
      Te respondo por partes: en primer lugar te sugiero no usar la señal de audio directamente, y mejor una representación tiempo-frecuencia (acá un ejemplo: medium.com/manash-en-blog/building-a-dead-simple-word-recognition-engine-using-convnet-in-keras-25e72c19c12b).
      Y en segundo lugar claro que sí, una vez entrenado el modelo puedes usar datos de tamaño variable. Lo importante es que al crear la red LSTM, en el parámetro "input_shape" definas como "None" el primer valor para que la red "entienda" que durante la predicción usará datos de tamaño variable. Acá un ejemplo: datascience.stackexchange.com/questions/26366/training-an-rnn-with-examples-of-different-lengths-in-keras
      Un saludo!

    • @deividbotina961
      @deividbotina961 4 роки тому

      @@codificandobits ok, genial, muchas gracias !

  • @sebastiannietor9724
    @sebastiannietor9724 4 роки тому +2

    Hola saludos desde Colombia!
    Me encantan tus vídeos, quisiera saber dónde aprendes todo esto, todos los comandos y como usarlos? Algún libro o artículo para aprender.

    • @codificandobits
      @codificandobits  4 роки тому +4

      Gracias por tu comentario Sebastián! Pues realmente no existe un solo recurso, como un libro o un sitio web en particular. Te puedo sugerir de entrada un libro muy completo que aborda todos estos temas en profundidad (claro, desde un punto de vista teórico, sin nada de programación): el libro se llama "The Deep Learning Book" (www.deeplearningbook.org/). Es el referente en este tema.
      Un saludo!

  • @oscarriojas2023
    @oscarriojas2023 4 роки тому +1

    Hola, me queda una duda está arquitectura se puede utilizar para clasificación? Te agradezco de antemano

    • @codificandobits
      @codificandobits  4 роки тому +1

      Hola Óscar. Depende del tipo de dato que quieras clasificar. Si estamos hablando de secuencias (por ejemplo en el caso de clasificación de emociones) entonces sí es posible.
      En otro casos las redes neuronales y las convolucionales se pueden usar también en procesos de clasificación, pero todo depende en últimas del tipo de dato.
      Un saludo!

    • @oscarriojas2023
      @oscarriojas2023 4 роки тому

      @@codificandobits es para el caso de señales como de ritmo cardíaco (que pienso son como series temporales) para saber si sufre o no de alguna patología, entrenarla con señales con y sin la patología y la red defina si la puede sufrir o no con una nueva señal, de nuevo gracias con tu explicación anterior entiendo mejor

    • @codificandobits
      @codificandobits  4 роки тому +1

      @@oscarriojas2023 En estos casos se pueden usar variantes de redes convolucionales. Un saludo!

  • @xaviergv9453
    @xaviergv9453 3 роки тому

    Hola, lo que noto en la predicción es que tiende mucho a copiar el último valor de la serie de 60 valores. La predicción hace como un shift de la función real.A que se debe?
    Muchísimas gracias por tus vídeos, son muy claros. Es de lo más pedagógico que he visto en redes neuronales

    • @wsith
      @wsith Рік тому

      porque es una función rezagada

  • @josuem2431
    @josuem2431 2 роки тому

    Excelente tutorial ,muy didáctico y de mucha ayuda. Me parece que hay un pequeño error en el codigo, en la funcion de plotter se grafica los datos de 0 a 191(len(predicciones)), sin embargo se precide el dato 61 usando los primeros 60 datos, por lo cual se deberia graficar desde 61 hasta 251(len(real)). Al hacer ese cambio la predicciones son casi identicas a los datos reales

  • @kalilveramartinez4617
    @kalilveramartinez4617 3 роки тому

    Me pregunto si no hay forma de tomar los errores que cometió el modelo en cada punto de la gráfica y predecir el próximo error de la misma, sumarle ese error estimado al modelo, y de esa manera tener un gráfico mejor ajustado, luego con el nuevo gráfico mejorado, hacer lo mismo y así sucesivamente hasta tener convergencia. Saludos

    • @codificandobits
      @codificandobits  3 роки тому

      Hola! Realmente es un poco más complicado, pues este error se incrementará con el tiempo debido a que el dato real fluctúa constantemente. Así que lo que tenemos se conoce como "model drifting": después de un tiempo el modelo entrenado inicialmente ya no tendrá un buen desempeño porque los datos han cambiado pero el modelo no ha sido re-entrenado.
      Este es un problema que enfrentan todos los modelos de machine/deep learning cuando son llevados a producción. Para evitar este drifting la única solución es periódicamente reentrenar el modelo con datos actualizados, monitorear el desempeño y si este decae re-entrenar nuevamente, y repetir el proceso una y otra vez.
      Un saludo!

  • @porchietto
    @porchietto 3 роки тому

    Hola buenas noches estoy jugando un poco con el código y hay una parte que no entiendo bien.
    1) ¿Porque usas? x_test = set_validacion.values
    x_test = sc.transform(x_test)
    en lugar de sc.fit_transform(set_validacion.values).
    2) cuando usas predicción = modelo.predict(X_test) te devuelve una lista de valores en que el primer valor correspondería al día 61 (time_step + 1)?

    • @andresaldairmedinarodrigue6280
      @andresaldairmedinarodrigue6280 Рік тому

      después del for la longitud del conjunto cambia, sabes por qué? siento que con eso entonces esta saliendo mal la gráfica.
      for i in range(time_step,len(x_test)):
      X_test.append(x_test[i-time_step:i,0])

  • @Felipe16ification
    @Felipe16ification 3 роки тому

    Hola, esperando que te encuentres bien, te escribo principalmente para hacerte la siguiente pregunta ¿Una red LSTM puede tener múltiples inputs (por ejemplo, precio, volumen, producto interno bruto, etc) y que se obtenga una sola salida? si es posible hacer eso, me podrías guiar o aconsejar por favor!

    • @codificandobits
      @codificandobits  3 роки тому +1

      Hola Felipe. Sí, es posible. Esto se llama análisis multivariado de series de tiempo. Acá encuentras un ejemplo: towardsdatascience.com/time-series-analysis-on-multivariate-data-in-tensorflow-2f0591088502
      Un saludo!

    • @Felipe16ification
      @Felipe16ification 3 роки тому

      @@codificandobits Muchas gracias por tu respuesta!

  • @RafaelDiaz-qg5yo
    @RafaelDiaz-qg5yo 3 роки тому

    En el ejemplo se entreno la RED LSTM con datos al 30/Diciembre 2016, y utilizamos datos para validación del 2017... como se hace para predecir mas adelante de los datos de entrenamiento y test ... Ejemplo: entreno mi RED LSTM al día de ayer, ¿Como puedo predecir de hoy a 30 días adelante ?

    • @wilowbrown1837
      @wilowbrown1837 3 роки тому

      Hola buenas tardes. encontraste la solución a tu pregunta. Porque me gustaría saber como hacer lo mismo. tener 2, 3 días o un mes de predicción. Te agradecería que que compartieras la solución si la encontraste. gracias.

  • @mariacamila6908
    @mariacamila6908 4 роки тому +1

    Buenas tardes, si deseo escoger cual es el periodo de tiempo que deseo predecir sin tener los datos reales para hacer la comparación, cual seria la modificación en el código?

    • @codificandobits
      @codificandobits  4 роки тому

      Hola María Camila. En el código disponible en Github deberías modificar la línea 47 (variable "time_step"). Un saludo!

    • @wariowadillo4139
      @wariowadillo4139 4 роки тому

      @@codificandobits Como quedaría esa modificación?

  • @deeper_soundfy5528
    @deeper_soundfy5528 2 роки тому

    Hola! Me vi la lista de reproducción completa. Mi pregunta es, ¿Y si solo quiero saber el precio de cotización de "mañana"? De qué manera se logra? De manera que tenga una aplicación práctica y no quede la "predicción" en algo que sucedió tiempo atrás como una anécdota de "oh, funcionó bien"... Gracias. Saludos desde Argentina.

    • @santiagocabascango6514
      @santiagocabascango6514 2 роки тому

      Hasta cierto punto bien entrenada.. Y muy difícilmente tendrías algo certero
      Porque por ejemplo.. Poniendo el caso de los dolares y pesos mexicanos
      Solo por el hecho qie trump iba a ganar el peso empezó a caer y caer

    • @cristianjuarez1086
      @cristianjuarez1086 2 роки тому

      yo dejaria entrenandola un par de años y la iria testeando y comparando. El dia que tenga gran capacidad de prediccion podria darle provecho

  • @antonioperez6241
    @antonioperez6241 4 роки тому

    Hola.
    De donde has sacado estos datos?
    Solo llegan hasta el 2018.
    Seria bueno poder tenerlos a ultima fecha para así, poder manejar algo mas real.
    Y no solamente APPL si no otros valores donde practicar.
    Gracias!

    • @codificandobits
      @codificandobits  4 роки тому

      Hola Antonio. Los obtuve de Kaggle Datasets (www.kaggle.com/datasets). Un saludo!

  • @elingenierodelaweb
    @elingenierodelaweb 4 роки тому

    Otra cosa si pudieras hacer un video donde trabajes con cuDNNLSTM según es para multiplicar por 10 la velocidad de entrenamiento en la pc intente pero me da muchos errores en la instalación de cudnn de nvidia y para pruebas sería muy util para probar GPU

    • @codificandobits
      @codificandobits  4 роки тому

      Sí, las librerías cuDNN y la puesta en funcionamiento de tensorflow con GPU es un poco enredada. Más adelante espero hacer un tutorial paso a paso, pero el problema es que en últimas la instalación de estas librerías depende de la tarjeta GPU que se tenga en particular, así como de las versiones de Python y de tensorflow que se estén usando.
      Un saludo!

    • @elingenierodelaweb
      @elingenierodelaweb 4 роки тому

      @@codificandobits Exactamente es un enorme proceso mediante el cual... dos dias al final como que no me funciono, hay que tomar en cuenta la version del CuDNN, ejemplo 7.05 + de la 8,9 o 10 de otra cosa y se escoge segun el sistema operativo la version mas que todo el linux, no uso windows... pero seria genial poder trabajar con GPU segun la teoria dice que el entrenamiento corre ejemplo algo de 10 min baja a 2 min. Una barbaridad de ahorro de tiempo...

    • @codificandobits
      @codificandobits  4 роки тому

      @@elingenierodelaweb Exactamente. El problema es que las versiones de la diferentes coincidan. La otra alternativa es tomar el código fuente y compilarlo, pero esto tampoco es tan fácil.
      Pero en últimas el ahorro de tiempo es significativo.

  • @pochengueTV
    @pochengueTV 4 роки тому +3

    Muchas gracias crack! Genial el video, pero tengo una duda, que quizás alguien acá me pueda responder.
    Me puse a jugar con el código cambiando el tamaño del input, por ejemplo con bloques de 20 y 100 precios en vez de 60 y me di cuenta que el resultado siempre es un gráfico muy parecido pero corrido en el eje X. Y veo que en tu caso ocurre lo mismo, si corres el gráfico de tu predicción 60 unidades a la derecha te da una predicción muuuuuy precisa. Entonces, lo que no entiendo son dos cosas:
    1- Por qué ocurre el corrimiento.
    2- ¿Cómo la predicción puede ser taaan precisa?

    • @pochengueTV
      @pochengueTV 4 роки тому +4

      Bien, ya entendí:
      1- El corrimiento se debe a que la primer predicción es del momento 61 en el tiempo, los primeros 60 no se predicen, se usan como input.
      2- La extrema precisión se debe a que se predice de un valor a la vez y usando los valores reales anteriores, es decir se dan pasos muy chicos como para que la predicción pueda desviarse de los valores reales. Creo que algo más razonable sería usar como inputs los predicciones que se van haciendo, o aumentar el tamaño de loa outputs.

    • @codificandobits
      @codificandobits  4 роки тому +2

      Wow, gracias por tu aclaración y explicación. Mejor explicado imposible!
      Un saludo!

    • @wariowadillo4139
      @wariowadillo4139 4 роки тому

      ​@@pochengueTV como puedo usar como inputs los predicciones que se van haciendo?

    • @pochengueTV
      @pochengueTV 4 роки тому +1

      @@wariowadillo4139 Hola. De casualidad encontré el notebook donde estaba esto, pero no me hago cargo de lo que hice hace 5 meses jaja. No hice nada muy elegante, armé un loop for y en cada vuelta hacía la predicción y sumaba ese valor como input para la próxima iteración ( y quitando un valor tipo FIFO). Igual desde ese momento no volví a meterme en el tema así que tomalo con pinzas, seguramente hay un modo más elegante de hacerlo.

  • @inigomeniego4906
    @inigomeniego4906 4 роки тому

    Buenos días, me surge una duda... Si los datos de entrada son normalizados (de 0 a 1), las salidas siempre estarán también entre 0 y 1, ¿no? En ese caso, no podremos predecir si las acciones van a subir por encima del máximo con el que se entrenó la red. A no ser que la red pueda recibir datos entre 0 y 1 y dar valores como 1'5.

    • @codificandobits
      @codificandobits  4 роки тому

      En principio tanto la entrada como la salida están normalizadas al rango 0 a 1. Sin embargo, una vez hecha la predicción se debe re-escalar la salida al rango en el que se encuentran los datos originales. Esto se realiza en el código fuente en la línea 90 (prediccion = sc.inverse_transform(prediccion)).
      Un saludo!

    • @inigomeniego4906
      @inigomeniego4906 4 роки тому +1

      @@codificandobits pero si la predicción no puede ser mayor que 1, no es cuestión de re-escalar, simplemente tiene un techo que no puede superar.

  • @kascesar
    @kascesar 4 роки тому

    Hola mucho gusto, lamento comentar tan tarde. Es posible agregar mas capas LSTM una tras otras para conseguir mejores resultados ?
    Mi pregunta va por el motivo de que al final dijiste algo de ese estilo. Muy buenos videos por cierto!

    • @codificandobits
      @codificandobits  4 роки тому

      Hola César. Claro que sí es posible. Si miras el código fuente, en la línea 71 usas la directiva "modelo.add(LSTM ...)". Puedes añadir una línea similar a esta para agregar las capas que consideres necesarias. Un saludo!

    • @kascesar
      @kascesar 4 роки тому

      @@codificandobits hola, si lo descubri hace tiempo gracias de todas formas, una pregunta... cual es la diferencia entre rnn y lstm, en cuanto a u problema de time prediction

    • @codificandobits
      @codificandobits  4 роки тому

      @@kascesar La RNN convencional tiene, por decirlo así, una "memoria limitada". Es decir, para este caso de la predicción de acciones no se podrían usar ventanas históricas de 60 días, tal vez la RNN soportaría 10 días o menos y por tanto la predicción no sería adecuada. En cambio las LSTM logran analizar secuencias más extensas, como se muestra en este ejemplo. Un saludo!

    • @kascesar
      @kascesar 4 роки тому

      @@codificandobits Mi pregunta va por el motivo de que a las redes LSTM las entrenas con batches de set de datos, me refieroa que en el entrenamiento a la red le pasas tensores tipo MxNxL, en el ejemplo en el que trabajo son batches de 10x10x3 ... mi pregunta viene a que cuando hago inferencia con el set de prueba, la red me devuelve 10 resultados, siendo que la ultima capa es una capa densa con una unica neurona. tiene algun sentido hacer inferencia con tensores de 1x10x3 a pesar de que en el entrenamiento lo hice con size de 10x10x3 ?

    • @kascesar
      @kascesar 4 роки тому

      Te comparto link colab.research.google.com/drive/1n-atAomMhGgnk88JZnaBt7Wl0CHNWWSP

  • @wousav6315
    @wousav6315 3 роки тому

    Pregunta: Por que cuando se corre el mismo código otra vez, el resultado es diferente :(

    • @codificandobits
      @codificandobits  3 роки тому

      Ummm... el resultado debería ser el mismo. Verifica que la semilla del generador aleatorio esté en el mismo valor siempre (np.random.seed..., o algo por el estilo). Un saludo!

  • @srdonpitopocho1183
    @srdonpitopocho1183 4 роки тому

    Por que utilizas transform() para la validación y fit_transform() para el entrenamiento? He mostrando los valores puedo ver que al usar fit_transform() sí el rango es de 0-1, pero empleando transform() no es de 0 a 1. Tambien preguntarte por que no hacer en el conjunto de validacion esto:
    x_test = sc.transform(set_validacion)
    En vez de como está:
    x_test = set_validacion.values
    x_test = sc.transform(x_test)
    Hay alguna diferencia que se me escapa?
    Mil gracias por este tutorial Miguel, me ha ayudado mucho, de verdad te lo agradezco.

    • @srdonpitopocho1183
      @srdonpitopocho1183 4 роки тому

      Respondiendo a mi yo del pasado:
      datascience.stackexchange.com/questions/12321/difference-between-fit-and-fit-transform-in-scikit-learn-models
      Espero ayudar a alguien más...

    • @codificandobits
      @codificandobits  4 роки тому

      Exactamente, gracias por tu contribución. Un saludo!

  • @andresfelipeestradarodrigu301
    @andresfelipeestradarodrigu301 4 роки тому

    EXCELENTE VÍDEO, MUY CLARO pero tengo una duda, por que 50 neuronas y no 30 o 60 o 16 u otro valor??

    • @andresfelipeestradarodrigu301
      @andresfelipeestradarodrigu301 4 роки тому

      Tienes bibliografia o algún paper donde profundizar en modelos lstm??

    • @codificandobits
      @codificandobits  4 роки тому +1

      Hola Andrés Felipe. Esta es "la pregunta del millón", y en Deep Learning realmente no existe, hasta el momento, un desarrollo teórico que nos permita determinar cuál es el tamaño más adecuado (en términos del número de neuronas y el número de capas). Esto depende mucho de los datos que se estén procesando y del desempeño que vayamos observando en el modelo entrenado.
      Un saludo!

    • @codificandobits
      @codificandobits  4 роки тому

      @@andresfelipeestradarodrigu301 te sugiero este artículo arxiv.org/pdf/1506.00019.pdf, que aunque es un poco denso y extenso explica en detalle todo lo relacionado con las RNN y las LSTM. Un saludo!

  • @parraduarte
    @parraduarte 4 роки тому

    Muy buen vídeo, como todos los de la serie. No obstante, ¿por qué no has intentado predecir la serie de diferencias de cotizaciones en lugar de la serie de nivel? El pronóstico de la serie de nivel siempre es engañoso. Parece mejor de lo que es, porque la predicción suele estar siempre cerca del valor real (porque son niveles, no diferencias).

    • @codificandobits
      @codificandobits  4 роки тому

      Hola Antonio. Tienes razón, aunque no soy especialista en el tema de las acciones, creo que sería una buena alternativa. En este caso bastaría con tomar el set de datos y calcular las diferencias, y luego usar esa información como entrada para el entrenamiento del modelo. Un saludo!

  • @jeffersonguevara155
    @jeffersonguevara155 3 роки тому +1

    hola muchas gracias por tu video, alguien me podria explicar por favor por que hace la predicion con prediccion = modelo.predict(X_test)
    donde x text es igual a set validacion x_test = set_validacion
    lo que trato de decir es por que hace la predicion usando los datos que queremos predecir

    • @codificandobits
      @codificandobits  3 роки тому +1

      Hola Jefferson. Ten en cuenta que 'x_test' contiene bloques de 60 datos históricos. Estos 60 datos ingresan a la Red LSTM, y la red predice el dato 61.

    • @jeffersonguevara155
      @jeffersonguevara155 3 роки тому +1

      @@codificandobits hola muchas gracias por tu respuesta

    • @jeffersonguevara155
      @jeffersonguevara155 3 роки тому +1

      soy muy nuevo en estoy pero no entiendo por que X_test se saca de los set de datos del 2017 año que es el que quiero predecir

    • @jeffersonguevara155
      @jeffersonguevara155 3 роки тому +1

      @@codificandobits en este caso que de donde sacarial el X-test si quiero predecir el año 2018 2019 que no estan en nuestro archivo csv "agradesco su tiempo"

  • @Joserodriguez-zi9vm
    @Joserodriguez-zi9vm 4 роки тому +2

    ¿Como sé el numero de neuronas que necesito para la LSTM?

    • @richygordito
      @richygordito 4 роки тому

      tengo la misma duda, porque usaste 50 neuronas?

    • @codificandobits
      @codificandobits  4 роки тому

      Hola José. Esa es la gran pregunta cuando se desarrolla cualquier modelo "Deep Learning": ¿cuántas neuronas (y/o cuántas capas) uso? Realmente no existe una respuesta adecuada o que tenga algún sustento matemático, pues el número de neuronas/capas dependerá de la complejidad de los datos que procese la red, y estos datos pueden ser de cualquier tipo!!! (imágenes, videos, texto, audio, etc.)
      Así que la forma convencional de definir este número de neuronas/capas es analizando el entrenamiento y la forma como se comporta el error durante el entrenamiento y la validación. Generalmente se crean varios modelos, cada uno con diferentes capas y número de neuronas, y aquel con los menores niveles de error será el que resulta más adecuado para una aplicación en particular.
      Un saludo!

    • @Joserodriguez-zi9vm
      @Joserodriguez-zi9vm 4 роки тому

      @@codificandobits Muchas gracias por tomarse el tiempo de contestar y gracias por la respuesta

    • @wariowadillo4139
      @wariowadillo4139 4 роки тому

      @@codificandobits como pongo otra capa LSTM?

  • @santiagocabascango6514
    @santiagocabascango6514 2 роки тому

    Yo quería hacer algo asi.. Pero con los juegos de lotería xD

  • @joaquinbolanos2659
    @joaquinbolanos2659 24 дні тому

    Hola, podrías compartir el dataset para realizar el ejercicio? Gracias!!

    • @alelsixx6168
      @alelsixx6168 7 годин тому

      Amigo yo tengo un código funcional en python pero es usado en consola , estoy tratando de hacer mi Back y fronted en base a este.

  • @sergiodelarivapolanco7463
    @sergiodelarivapolanco7463 4 роки тому

    Hola, te has olvidado del problema de la no estacionariedad de la serie. Si la serie es no estacionaria (los datos de entrada tienen tendencia, la varianza no es constante y hay autocorrelación) la predicción en base a un LSTM no es válida, dado que toma como hipótesis la estacionariedad de la serie.

    • @codificandobits
      @codificandobits  4 роки тому

      Hola Sergio, tienes razón, la no estacionariedad es un aspecto que se debe tener en cuenta. Partamos del hecho de que el modelo LSTM aprende una representación simplificada de los datos, simplificada en el sentido de que nunca será posible contar con un set de entrenamiento que capture todas las posibles variaciones de la acción en la bolsa. En este sentido la red LSTM siempre tendrá una limitación.
      Sin embargo es importante tener en cuenta que una red recurrente (como las redes LSTM) está en capacidad de aprender no linealidades en los datos, o tendencias en su comportamiento. En particular las redes LSTM son muy buenas en esto, así que el problema de la no estacionariedad no resulta tan crítico en estos casos. Claro siempre hay un pero, nada es totalmente gratis: para poder tener una predicción robusta se requiere una red LSTM lo suficientemente compleja, capaz de aprender dependencias amplias en el tiempo, y para ello desafortunadamente se requieren muchos, pero muchos datos.
      Un saludo y gracias por tu comentario!

  • @EduardoCollazos15
    @EduardoCollazos15 Рік тому

    alguien sabe si funcionaria con PyCharm?

    • @codificandobits
      @codificandobits  Рік тому +1

      Claro que sí. PyCharm es un entorno para programar en Python y por tanto no debería haber problema. Lo que sí debes tener en cuenta es que en tu instalación de python se encuentren las librerías requeridas para este tutorial

    • @EduardoCollazos15
      @EduardoCollazos15 Рік тому

      @@codificandobits ese problema hipotético de podría solucionar actualizando a la última versión de Python verdad ?

    • @codificandobits
      @codificandobits  Рік тому +1

      @@EduardoCollazos15 No. Debes instalar las librerías requeridas (tensorflow, keras y scikit learn). La actualización de Python instalaría la versión más reciente del lenguaje de programación, pero no las librerías.

  • @residentevil3557
    @residentevil3557 3 роки тому

    No veo como puede servir para predecir más de 1 día adelante

  • @MavsFit
    @MavsFit 4 роки тому +2

    Pero no predice el futuro ya que tú le das unas valores de validación, no? Si yo quiero predecir los proximos 5 dias, no metiendo los valores, si no diciéndole los 5 siguientes días, cómo se haría? Creo que tu video es bueno pero es necesario lo que yo digo pues así es un caso real. Gracias, espero respuesta.

    • @codificandobits
      @codificandobits  4 роки тому

      ¡Hola y gracias por tu comentario!
      En el video se muestra efectivamente una predicción, pues el modelo sólo conoce los datos de 2006 a 2016, y con esta información predice lo que ocurrirá en 2017. Lo que ocurre es que en el mismo video (cerca del minuto 4:00) muestro dos gráficas: el resultado de la predicción (en azul) y el valor real de la acción (2017) que no lo conoce la red pero que lo dibujo simplemente para poder hacer una comparación de qué también lo está haciendo el modelo.
      ¡Un saludo!

    • @MavsFit
      @MavsFit 4 роки тому

      @@codificandobits Creo que no me has entendido o yo no me he explicado. Lo que me refiero, es que si realmente fuera una predicción futura, no tendrías por qué meterle los datos en x_test. Tú a x_test le metes los datos que LA RED VA A PREDECIR. Por tanto, ya le estás pasando unos valores, tú mismo puedes comprobarlo si le metes otros valores, te da unos resultados muy muy distintos.
      Yo lo que quiero saber, es cómo me puede predecir la curva que te predice pero SIN METERLE DATOS EN EL x_test, es decir, quiero saber cómo decirle que me prediga unas fechas, meterle en el x_test unas fechas, no unos valores, yo a la red no le quiero decir absolutamente nada de valores, no quiero que sepa nada de nada porque quiero que me los prediga. Yo quiero entrenarla con valores en unas fechas y después, para PREDECIR, quiero decirle a la red: "Quiero que me predigas desde el 7 de Abril hasta el 20 de Octubre" por ejemplo.
      He visto más de 10 veces el vídeo y el minuto 4:00 y lo que te digo es que no le quiero meter valores, no quiero meterle los valores que va a predecir, solo quiero meterle fechas, porque si le meto valores, no sé por qué le influye y cambia mucho mucho. Un ejemplo es, por si no me he explicado:
      TRAIN: Del 1/1/2020 al 5/2/2020 me he comido X manzanas cada dia.
      Test: ¿Cuántas manzanas me comeré del 6/2/2020 al 9/2/2020?
      Muchas gracias por tu atención, espero tu respuesta ya que quiero entenderlo, y , si puedes poner un ejemplo aqui adjunto de lo que yo digo, seria perfecto. Un saludo muy grande.

    • @codificandobits
      @codificandobits  4 роки тому +2

      @@MavsFit Hola de nuevo. Ya te entiendo la pregunta...
      Aunque me dejas pensando, pues no creo que lo que buscas hacer sea posible pues el mismo principio de funcionamiento de la red LSTM es precisamente tomar una secuencia de entrada, analizar su patrón de comportamiento, y generar así una secuencia de salida. Si eliminamos la secuencia de entrada no sería posible hacer una predicción.
      Pero tu pregunta es muy buena y me deja con curiosidad. Con una red LSTM/recurrente no sería posible, pero déjame investigo si se lograría hacer con otra arquitectura y te cuento.
      ¡Un saludo!

    • @MavsFit
      @MavsFit 4 роки тому

      @@codificandobits Perfecto, espero respuesta o vídeo, gracias!

    • @parraduarte
      @parraduarte 4 роки тому

      @@MavsFit Yo no sé si te he entendido. Lo que quieres es predecir 5 días futuros (o los días que sean), pero obviamente no dispones de los datos aún. No puedes entonces ir montando esa ventana móvil de 60 días para predecir hasta el quinto día futuro, porque no tienes el de mañana, ni del de pasado mañana, etc. Si es esto lo que planteas, la solución es conocida y ya la ha planteado codificandobits en otra respuesta a otro suscriptor. Has de adaptar el código para ir tomando como valores reales los que te vaya prediciendo la red. Para la predicción de mañana dispones ya de los 60 datos reales anteriores. Para la predicción de pasado mañana (predicción que también haces hoy) tomas como dato real de mañana la predicción que obtuviste para mañana. Y así sucesivamente para todos los días futuros hasta llegar a la última fecha que quieres predecir.

  • @dariocalle2402
    @dariocalle2402 4 роки тому +1

    Creo que está comparando los valores reales 60 días desfasados con respecto a las predicciones.
    Dentro de la función graficar_predicciones, ¿no tendría más sentido que compare con los valores predichos los elementos del vector real[60:len(prediccion)+60]?
    def graficar_predicciones(real, prediccion):
    plt.plot(real[60:len(prediccion)+60],color='red', label='Valor real de la acción')
    en lugar de:
    def graficar_predicciones(real, prediccion):
    plt.plot(real[0:len(prediccion)],color='red', label='Valor real de la acción')
    Si lo hace verá que al graficar los datos de la predicción son mucho más parejos, el resultado es mucho mejor.
    Muy bueno el video y muy sencillo el código

  • @Proyekta.Solutions
    @Proyekta.Solutions Рік тому

    😂😂😂😂😂😂😂. La bolsa no se puede predecir. Tienes que leerte la teoría del caos, la teoría de eficiencia en los mercados, tienes que leer a Jim Rickards, Michael Hudson, Nate Haggens. Por favor no te tires tus análisis. Si eso fuera así, todo el mundo lo haría.