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

Поділитися
Вставка
  • Опубліковано 25 жов 2024

КОМЕНТАРІ • 36

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

    👉 Xiperia ofrece consultoría empresarial que transforma datos en conocimiento accionable para alcanzar los objetivos de tu negocio. Conoce más en www.xiperia.com

  • @samuelivannoya267
    @samuelivannoya267 2 роки тому +6

    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 :)

  • @diegohd4266
    @diegohd4266 8 місяців тому

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

  • @ArturoDelgado-xk8qj
    @ArturoDelgado-xk8qj Рік тому +2

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

    • @CodigoMaquina
      @CodigoMaquina  9 місяців тому

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

  • @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!!

  • @guillermorosas3398
    @guillermorosas3398 Місяць тому

    es usted un master, explico algo complejo, con una sencillez, mis respetos!!

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

    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.

  • @garcia3137
    @garcia3137 7 місяців тому

    Excelente explicación!

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

    Gracias Profe..

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

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

  • @joseleonardosanchezvasquez1514
    @joseleonardosanchezvasquez1514 2 роки тому +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  2 роки тому +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.

  • @JhonDrock
    @JhonDrock 7 місяців тому

    excelente

  • @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 :)

  • @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_

  • @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 :)

  • @mauriciodiaz7467
    @mauriciodiaz7467 7 місяців тому

    Suscrito

  • @pegazo1404881
    @pegazo1404881 2 роки тому +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:
      ua-cam.com/video/lIPCpPd0YuI/v-deo.html

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

      @@CodigoMaquina gracias, les escribí al Face

  • @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

  • @alexanderfish9683
    @alexanderfish9683 8 місяців тому +1

    en 1.5 evitas dormirte con su explicacion