Identifica Clusters con DBSCAN: Algoritmo paso a paso e implementación con Python

แชร์
ฝัง
  • เผยแพร่เมื่อ 7 ก.ย. 2024

ความคิดเห็น • 34

  • @CodigoMaquina
    @CodigoMaquina  2 ปีที่แล้ว +3

    ⭐ De la co-fundadora de Código Máquina, productos de cosmética natural SINHAKI:
    www.amazon.com.mx/stores/sinHaki/page/1BD34FBC-C0F9-44F5-AC69-520634334C61?ref_=ast_bln

  • @samuelivannoya267
    @samuelivannoya267 2 ปีที่แล้ว +5

    Sos un capo!!!!!!!!!!!!!!!!!!!!!!!! Muy bien explicado!!!! Muchas gracias!!! Saludos desde Chaco Argentina.

    • @CodigoMaquina
      @CodigoMaquina  2 ปีที่แล้ว

      Muchas gracias por tus comentarios. Un abrazo desde México :)

  • @adrianromancebrian1086
    @adrianromancebrian1086 ปีที่แล้ว +5

    te descubro con este video, estudio ciencia de datos en la universidad de valencia. Muchas gracias por hacer el contenido tan facil de comprender, un saludoo. : )

    • @CodigoMaquina
      @CodigoMaquina  ปีที่แล้ว

      Bienvenido a esta comunidad Adrian, gracias por tu comentarios. Saludos!!

  • @ArturoDelgado-xk8qj
    @ArturoDelgado-xk8qj 10 หลายเดือนก่อน +2

    Gracia por el video! Explicas las cosas de una manera que resulta sencilla de entender!

    • @CodigoMaquina
      @CodigoMaquina  8 หลายเดือนก่อน

      @ArturoDelgado-xk8qj gracias por tus comentarios y un muy feliz año!!!

  • @SR_M0L1NA
    @SR_M0L1NA 3 หลายเดือนก่อน

    Hace años hice una cosa similar sin conocer que existía este método. Epsilon lo definí como radio a partir del cual si un punto estaba dentro de ese radio pertenecía al mismo agrupamiento. Para calcular el radio (epsilon) lo hice escogiendo el mínimo entre el percentil 2 y la raiz cuadrada de la desviación típica de la matriz de distancias. No tuve en cuenta los puntos a escoger, sólo las distancias.

  • @diegohd4266
    @diegohd4266 6 หลายเดือนก่อน

    ¡Brutal algoritmo! Hasta se me antoja hacer mi tesis al respecto 😅

  • @joseleonardosanchezvasquez1514
    @joseleonardosanchezvasquez1514 ปีที่แล้ว +2

    Genial como siempre, te comento que hubiera sido bueno ver los datos en un dataframe, solo para efectos de visualización. Pero la explicación muy buena.
    Por otro lado, disculpa leí el comentario que tenias pero no entendí mucho la respuesta a, la podrías desglosar un poco mas.
    Es sobre la pregunta del predict, es"" Otra opción que alguna vez leí es etiquetar una nueva instancia en función del punto CORE que esté más cerca "".

    • @CodigoMaquina
      @CodigoMaquina  ปีที่แล้ว +1

      Muchas gracias por tus comentarios. Esa respuesta está asociada a una pregunta de alguien que deseaba utilizar DBSCAN (una técnica no supervisada) como técnica de clasificación (supervisada) para etiquetar nuevos datos. Y sugerí que una opción podría ser simplemente asignarle la etiqueta del cluster más cercano, lo cual se traduce en asignarle la etiqueta del punto CORE más cercano.

  • @garcia3137
    @garcia3137 6 หลายเดือนก่อน

    Excelente explicación!

  • @jortigasperu
    @jortigasperu ปีที่แล้ว +1

    Gracias Profe..

    • @CodigoMaquina
      @CodigoMaquina  ปีที่แล้ว

      José gracias por comentar y por seguir el contenido del canal :)

  • @JhonDrock
    @JhonDrock 6 หลายเดือนก่อน

    excelente

  • @mauriciodiaz7467
    @mauriciodiaz7467 6 หลายเดือนก่อน

    Suscrito

  • @guillermoucedacampos6130
    @guillermoucedacampos6130 ปีที่แล้ว +1

    Muy bien explicado. Me gustaría saber cómo puedo definir los parámetros eps y min _samples, comentaste que por experimentación, podrás dar alguna idea de cómo hacerlo? Gracias

    • @JenryLuis
      @JenryLuis ปีที่แล้ว +2

      Por experimentacion se refiere a que pruebes un rango de valores para eps y min_samples. Ejecutas varias veces con los diferentes valores. saludos!

    • @CodigoMaquina
      @CodigoMaquina  ปีที่แล้ว +1

      Hola @guillermoucedacampos6130. Gracias por tus comentarios y por la pregunta. La respuesta de @JenryLuis aquí abajo es muy buena. Gracias por seguir el contenido del canal :)

    • @CodigoMaquina
      @CodigoMaquina  ปีที่แล้ว +1

      @JenryLuis muchas gracias por apoyar a otras personas con sus dudas. Es una muy buena persona :)

  • @constanzaonetti5919
    @constanzaonetti5919 ปีที่แล้ว +2

    Hola, que pasa si me marca todos -1 (es decir todos ruido) que puede estar pasando?

    • @CodigoMaquina
      @CodigoMaquina  ปีที่แล้ว +1

      Hola @constanzaonetti5919 gracias por la pregunta. Sin tener mucho contexto de tus datos y código ¿qué tal si pruebas diferentes valores de épsilon? Gracias por interactuar con el contenido del canal :)

  • @Chris-rc7vx
    @Chris-rc7vx 2 ปีที่แล้ว +3

    Si usamos DBSCAN en los datos de entrenamiento ¿cómo le asignamos las etiquetas a nuevas observaciones(p.e. datos de validación)?

    • @CodigoMaquina
      @CodigoMaquina  2 ปีที่แล้ว +4

      Me encantó esta pregunta. Gracias por plantearla. DBSCAN en scikit-learn no tiene un método predict dado que no es un clasificador en sí. Sin embargo, esto no implica que no se puedan etiquetar nuevas instancias. Podríamos lograr ese objetivo indirectamente. Por ejemplo, con los resultados de los clusters se puede entrenar un clasificador y posteriormente con ese clasificador etiquetar nuevas instancias. Otra opción que alguna vez leí es etiquetar una nueva instancia en función del punto CORE que esté más cerca. Esto involucraría programar un poco pero no sería tan complicado dado que el mismo modelo de DBSCAN tiene un atributo que nos regresa los índices de todos los puntos CORES -> 'core_sample_indices_ '. Muchas gracias por hacer esta pregunta y por ver el canal :)

    • @Chris-rc7vx
      @Chris-rc7vx 2 ปีที่แล้ว +1

      @@CodigoMaquina Muy interesante ambas alternativas me parece muy razonable la segunda, gracias por la respuesta. ¡Saludos!

  • @julianarturomejiaespitia4479
    @julianarturomejiaespitia4479 ปีที่แล้ว +2

    Buenas noches, si trabajo con mas de 2 variables, deberia realizar alguna reduccion de dimensionalidad? o como podria trabajar con DBSCAN para estos tipos de datos. Gracias

    • @CodigoMaquina
      @CodigoMaquina  ปีที่แล้ว +3

      Julian gracias por la pregunta. Te comento que DBSCAN puede trabajar directamente con 2 o más variables/dimensiones. Aquí va un ejemplo para tres dimensiones:
      from sklearn.cluster import DBSCAN
      import numpy as np
      # creación de datos tridimensionales aleatorios
      np.random.seed(8)
      X = np.random.randn(90).reshape((30, 3))
      # clusterización de los datos
      clustering = DBSCAN(eps=0.8, min_samples=2).fit(X)
      clustering.labels_

  • @elizabethguevara9534
    @elizabethguevara9534 ปีที่แล้ว +1

    Como se hace cuándo te dan dos valores de x y no tenes una variable y. Por ejemplo un cliente tiene 2 coordendas x1 y x2 donde x1 es lo primero q ve y x2 lo segundo q ve en la pagina web. Me podria orientar

    • @CodigoMaquina
      @CodigoMaquina  ปีที่แล้ว

      Elizabeth gracias por ver el contenido del canal y por tu pregunta. Sin conocer el contexto del proyecto, aquí van algunos comentarios que tal vez puedan ayudar. Un primer paso que se podría realizar sería definir una potencial hipótesis a explorar, es decir, en función de tus objetivos, plantea una pregunta (asociada a tus datos) que te gustaría responder. Por ejemplo, algunas preguntas podrían ser ¿existe en una relación entre x1 y x2? ¿existen agrupamientos entre los clientes en función de x1 y x2? Si tienes otros datos, por ejemplo, si el cliente realizó o no una compra, podrías preguntarte ¿si es posible diferenciar a los compradores de los no compradores en función de x1 y x2? Estas preguntas se definen a partir de tus objetivos de negocio, lo cual te ayudará a determinar el tipo de técnica a utilizar, por ejemplo: clasificación o clusterización.

    • @elizabethguevara9534
      @elizabethguevara9534 ปีที่แล้ว

      @@CodigoMaquina solo tengo 2 datos x1 en coordenadas x lo primero que ve el cliente, x2 lo segundo q ve en coordenadas x tambien

  • @pegazo1404881
    @pegazo1404881 ปีที่แล้ว +1

    Dónde conseguir una base de 5 mil líneas para hacer un ejercicio similar?

    • @CodigoMaquina
      @CodigoMaquina  ปีที่แล้ว

      El archivo que utilizo en este video lo puedes descargar de nuestro repositorio en github:
      github.com/CodigoMaquina/code/blob/main/datos/casas.csv
      Sin embargo, si deseas conocer muchos otros lugares donde podrías conseguir datos similares y más, te recomiendo echarle un ojo al siguiente video donde damos algunos tips:
      th-cam.com/video/lIPCpPd0YuI/w-d-xo.html

    • @pegazo1404881
      @pegazo1404881 ปีที่แล้ว

      @@CodigoMaquina gracias, les escribí al Face

  • @alexanderfish9683
    @alexanderfish9683 7 หลายเดือนก่อน +1

    en 1.5 evitas dormirte con su explicacion