K-means (o K-medias) para detección de Clusters: Algoritmo e implementación con Python

Sdílet
Vložit
  • čas přidán 25. 07. 2024

Komentáře • 82

  • @CodigoMaquina
    @CodigoMaquina  Před 2 lety +5

    Apoya a Código Máquina dando un Like, con un Super Gracias o visitando nuestra tienda en:
    facebook.com/C0d1g0Maqu1na/shop

  • @crsmoran
    @crsmoran Před 5 měsíci +4

    una bestia, no pudo haber quedado mejor explicado, mis felicitaciones!! El canal es oro puro

  • @emmanuelpena2653
    @emmanuelpena2653 Před 2 lety +11

    A eso le llamo tener verdadera vocación y amor por enseñar, aun con estudiar de forma autodidacta he aprendido mucho en tu canal, gracias por compartirnos tu conocimiento de una forma tan comprensible.

    • @CodigoMaquina
      @CodigoMaquina  Před 2 lety

      Muchas gracias por escribirnos palabras tan bonitas. Es muy gratificante leerlas :)

  • @user-kt9jr3dw2q
    @user-kt9jr3dw2q Před 7 měsíci +2

    Sinceramente un espectaculo. Todo explicado con claridad, de manera simple. Me ayudó un monton. Muchas gracias!

    • @CodigoMaquina
      @CodigoMaquina  Před 6 měsíci

      @user-kt9jr3dw2q muchas gracias por tus comentarios. Feliz año!!!

  • @user-fo4rk4ct8y
    @user-fo4rk4ct8y Před 4 měsíci

    excelente explicacion. muchas gracias por subir estos videos

  • @carlosf.2927
    @carlosf.2927 Před 14 dny

    Demasiado bien explicado!! gracias.

  • @ivan-rivera
    @ivan-rivera Před rokem +4

    Este video, junto con el video acerca de KNN, me ha salvado la vida en una tarea que tenia que presentar. Mas que por los archivos, es el hecho de que entendi claramente de que se trata. Son pocas las personas que explican tan facil, algo que es complejo. Felicitaciones.

    • @CodigoMaquina
      @CodigoMaquina  Před rokem +2

      Ivan muchas gracias por tus palabras. Es un placer leer que los videos aportan aunque sea un poco con la formación de las personas. Esa es la razón de ser de este canal :)

  • @luisalbertoivetta1731
    @luisalbertoivetta1731 Před 2 lety +3

    La claridad con la que explicas los temas es realmente sorprendente!!! Felicitaciomes

  • @alberthpinco3543
    @alberthpinco3543 Před 5 dny

    Que buena explicación muchas gracias

  • @mauriciojimenez4022
    @mauriciojimenez4022 Před 8 měsíci +1

    Recomiendo ampliamente el canal, el video y al ponente, muy digeribles lo que aporta el canal , muy valioso!

    • @CodigoMaquina
      @CodigoMaquina  Před 6 měsíci

      @mauriciojimenez4022 muchas gracias por las recomendaciones y un muy feliz año!!!

  • @klebermezones8820
    @klebermezones8820 Před 3 měsíci

    por fin pude entender, así me gusta aprender con poquitos datos, y no importando datasets de sklearn con datos gigantes que ni entiendo.

  • @virginiatenoriovelasquez2019

    No le entendía a mi profe y estaba un poco desganada y econtré esta maravilla. Mil gracias :3

    • @CodigoMaquina
      @CodigoMaquina  Před 11 měsíci

      @virginiatenoriovelasquez2019 muchas gracias por tus comentarios :)

  • @jhonchavez6669
    @jhonchavez6669 Před 10 měsíci +1

    Octavio muchas gracias por tus enseñanzas, tu explicación es muy clara.

    • @CodigoMaquina
      @CodigoMaquina  Před 10 měsíci

      @jhonchavez6669 te agradezco mucho tus comentarios.
      Dando like, comentando y/o compartiendo el video, ayudas a que este contenido llegue a más personas ¡¡¡GRACIAS!!!

  • @sergiohernanvazquez6469
    @sergiohernanvazquez6469 Před 2 lety +2

    Muchas gracias Octavio. Muy clara toda la explicación !!

    • @CodigoMaquina
      @CodigoMaquina  Před 2 lety +1

      Es un placer leer que el video es de utilidad. Gracias por comentar :)

  • @user-on5yw9qb2d
    @user-on5yw9qb2d Před 5 měsíci

    que gran clase profesor, la verdad explica genial, felicidades

  • @diegohd4266
    @diegohd4266 Před 5 měsíci

    ¡Qué buen vídeo! Un tema muy interesante explicado de forma clara y concisa.

  • @diegomoller7318
    @diegomoller7318 Před 2 lety +2

    Simplemente felicitarte, es el primer video que veo de ti. Siempre me estoy capacitando en esta área y eres súper claro para explicar, tu material vale oro. Saludos.

    • @CodigoMaquina
      @CodigoMaquina  Před 2 lety

      Muchas gracias por todos tus comentarios. Es muy gratificante escuchar que los videos son de utilidad. Gracias por seguir el canal :)

  • @rafaelmejia2803
    @rafaelmejia2803 Před 2 lety +2

    Gracias por compartir, tus vídeos son de mucha utilidad!

  • @guillermosilva1527
    @guillermosilva1527 Před 2 lety +2

    Excelente video.

  • @omarsharim6253
    @omarsharim6253 Před 2 lety +2

    Eres un profesional, felicidades, gran trabajo

  • @gustavojuantorena
    @gustavojuantorena Před 2 lety +2

    Excelente explicación!

    • @CodigoMaquina
      @CodigoMaquina  Před 2 lety +1

      ¡Gracias por tu comentario y por seguir al canal! :)

  • @ernestopetinozappala3885
    @ernestopetinozappala3885 Před 10 měsíci +1

    Excelente video, me resultó de gran ayuda para mi tesis de licenciatura.

    • @CodigoMaquina
      @CodigoMaquina  Před 9 měsíci

      Muchas gracias por tu comentario. Me da mucho gusto leer que lo videos son de utilidad :)

  • @juancarlosroa8761
    @juancarlosroa8761 Před rokem +1

    Wuaoo eres el mejor, despues de ver 1 video me siento un data scientist 😊

    • @CodigoMaquina
      @CodigoMaquina  Před rokem

      Juan Carlos muchas gracias por tus palabras :)

  • @YouTubeMinchi
    @YouTubeMinchi Před 10 měsíci +1

    Que excelente explicación!

    • @CodigoMaquina
      @CodigoMaquina  Před 10 měsíci +1

      @aragon391123 te agradezco mucho tu comentario.
      Dando like, comentando y/o compartiendo el video, ayudas a que este contenido llegue a más personas ¡¡¡GRACIAS!!!

  • @PedroChavez
    @PedroChavez Před rokem +1

    Gracias campeón....

  • @johnalexcasanacruzado4673
    @johnalexcasanacruzado4673 Před 9 měsíci +1

    Buen video!

    • @CodigoMaquina
      @CodigoMaquina  Před 6 měsíci

      @johnalexcasanacruzado4673 gracias. Feliz Año!

  • @luisarturoaguilartorres3735

    Crack!

  • @victorgarcia-wn9yt
    @victorgarcia-wn9yt Před 3 měsíci

    Mas claro , ponerle agua. Excelente. Gracias. Una consulta. Cuando hace append de las etiquetas al df de clientes , ¿como sabe que cada etiqueta corresponde exactaente a cada cliente? ¿cómo engancha ambas tablas de datos? saludos

  • @daanaortiz8303
    @daanaortiz8303 Před 2 lety +2

    muy bien explicado, como se aplicaría si tenemos mas de dos variables independientes y una variable dependiente como se harían los conjuntos de patrones

    • @CodigoMaquina
      @CodigoMaquina  Před 2 lety +1

      Muchas gracias por tu comentario y por la pregunta. En particular, K-means es una técnica de aprendizaje de máquina no supervisado, es decir, en este caso no se hace distinción explícita entre variables dependientes e independientes. No obstante, sí se pueden incluir los datos correspondientes a variables independientes y dependientes, pero k-means les da exactamente el mismo trato. Cabe mencionar que el ejemplo del video está en dos dimensiones, sin embargo, k-means también trabaja con tres o más dimensiones. Muchas gracias por seguir el contenido del canal :)

  • @edwardbrandt4868
    @edwardbrandt4868 Před měsícem

    Hola Octavio, un gran video al explicar el algoritmo k-means de clustering. Sin embargo, me gustaría saber porque se uso solo una métrica para medir la calidad del algoritmo, en este caso "Inercia". Según entiendo en la practica debiese mostrarse a lo menos 2 mas como "SSE" o el "Coeficiente de Silueta". Por otra parte, la conclusión es del video es que el método permitió encontrar 3 tipos de clientes. Fuera de lo mencionado anteriormente, que otra conclusión se obtiene de este tipo de análisis. Lo comento porque busco usarlo, peor quiero tener la certeza que podre sacar información valiosa de esto. Además de lo anterior, entiendo que K-means es susceptible a datos atípicos, los cuales deberían eliminarse. Agradeceré tus comentarios...un abrazo a la distancia.

  • @juanpablocruz6225
    @juanpablocruz6225 Před 2 lety +3

    Excelente video Octavio gracias por la dedicación al exponer conceptos y técnicas, tenía un par de preguntas. ¿Es posible crear clases o etiquetas a partir de clustering como mencionabas por ejemplo saldos en cuenta: alto, medio, bajo? Y ¿Además de segmentar y darle una aplicación según el contexto que se analice qué otras aplicaciones tiene el clustering?. Nuevamente gracias, un cordial saludo.

    • @CodigoMaquina
      @CodigoMaquina  Před 2 lety +1

      Muchas por tus comentarios y por tus preguntas. Con respecto a la primera pregunta: "¿Es posible crear clases o etiquetas a partir de clustering como mencionabas por ejemplo saldos en cuenta: alto, medio, bajo?" Sí sería posible asignar clases a los clusters detectados aunque normalmente eso ya se haría con conocimiento del negocio. Con respecto a la segunda pregunta "¿Además de segmentar y darle una aplicación según el contexto que se analice qué otras aplicaciones tiene el clustering?" En algunos casos también se puede utilizan para limpiar los datos (es decir, detectar el ruido en los datos) tal es el caso de la técnica DBSCAN (aquí va un video: czcams.com/video/HMis89lGdkA/video.html). Gracias por ver el canal e interactuar :)

  • @gabrieleliaschanchigolondr9476

    Gracias por compartir, excelente explicación. Ofrecen algún curso o taller de manera virtual?

    • @CodigoMaquina
      @CodigoMaquina  Před 2 lety +1

      Muchas gracias por tus comentarios y por tu interés en potenciales cursos o talleres. Al respecto, nosotros tenemos la esperanza que con la inclusión de cada vez más videos en el canal, podamos crear un apoyo a la formación autodidáctica de las personas de forma autónoma e independiente. Llevará su tiempo pero lo vamos a lograr :)

  • @martintusco3129
    @martintusco3129 Před rokem +1

    Hola Octavio. Felicidades explicas muy bien. Te sigo y likes. Estoy trabajando en una tesis, y me gustaría saber como vuelvo a los valores con las Unidades Medidas Originales. (Transforrmación Inversa). Me interesa para extraer los CENTROIDES en valores reales del caso. Muchas Gracias

    • @CodigoMaquina
      @CodigoMaquina  Před rokem

      Martín muchas gracias por tus comentarios. Con respecto a tu pregunta, las mismas clases de MinMaxScaler y StandardScaler tienen un método llamado inverse_transform() que justo realiza la transformación inversa de los valores. Gracias por seguir el contenido del canal :)

  • @inesramireztusseddu1570
    @inesramireztusseddu1570 Před rokem +1

    Hola, me encantan tus videos, te queria preguntar si dictas cursos en ciencia de datos?

    • @CodigoMaquina
      @CodigoMaquina  Před rokem

      Te agradecemos mucho el interés en cursos especializados. Sin embargo, no ofrecemos "cursos". Nuestro objetivo es que poco a poco podamos tener tantos videos como sea posible sobre ciencia de datos y machine learning para brindar herramientas que puedan apoyar el desarrollo autodidacta de las personas. ¡Te deseamos lo mejor en tu preparación! :)

  • @tomasscopelliti9362
    @tomasscopelliti9362 Před rokem +2

    Buenas tardes. Antes que nada, muchas gracias por tu video. Muy bien explicado!
    Tengo una duda. Dentro del bucle for, dentro del grafico scatter tener [saldo] y otra de [transacciones]. En el caso de tener mas columnas, como se haría? Porque solo se aceptan dos parámetros.
    Recién estoy empezando en todo esto, perdón si lo explicaste y no lo entendí.

    • @CodigoMaquina
      @CodigoMaquina  Před rokem +1

      Muchas gracias por tus comentarios y por el interés en el tema. Los clusters todavía se podrían graficar con tres dimensiones, sin embargo, para el caso general, es decir, cuatro o más dimensiones ya no se pueden graficar sin 'modificar' los datos. Para esto hay técnicas relativamente avanzadas para tratar los datos, los cuales hacen una reducción de la dimensionalidad aunque perdiendo cierta información. Si te interesa el tema, te recomiendo que le eches un ojo a la técnica de análisis de componentes de principales. Aquí va uno de nuestros videos: czcams.com/video/x-7BHjMA15M/video.html

    • @tomasscopelliti9362
      @tomasscopelliti9362 Před rokem

      @@CodigoMaquina Muchas gracias por tu respuesta! Tambien aprovecho a agradecerte todo el trabajo que haces. Este material vale oro. Saludos desde Arg

  • @fredyhuaynacho1403
    @fredyhuaynacho1403 Před rokem

    En el caso que quisiera aplicar para datos con coordenadas X, Y, Z, y que estos coordenadas son la ubicación de muestras de Oro, cobre y plata, y otros elementos más, y quisiera agrupar tomando en cuenta que puntos están cerca, pero también que esos datos sea similar en cuanto a los elementos como podría ser el oro o la plata

    • @CodigoMaquina
      @CodigoMaquina  Před rokem +1

      Gracias por tu pregunta. Primero, confirmo que K-means puede trabajar con datos de tres dimensiones (X, Y, Z) o más. Si deseas agrupar también en función de un criterio adicional, lo que tendrías que hacer es agregar una dimensión más (W, X, Y, Z). En esa dimensional adicional tendrías que codificar la relación de similitud entre los elementos. Espero que la respuesta ayude aunque sea un poco :)

  • @joseleonardosanchezvasquez1514

    Como siempre muy buena explicación, pero quiero hacerte tres comentarios 1. Creo que la cantidad de datos que usaste es muy pequeña para logar bien el efecto del codo 2. Seria bueno que hubieras colocado las formulas de centroide, aunque es sencilla y también la formula de la inercia y 3. seria bueno completarlo con la métrica de la silueta que es cantante buena. Pero como siempre todo muy bueno felicitaciones

    • @CodigoMaquina
      @CodigoMaquina  Před rokem +1

      Como siempre muchas por tus comentarios y todas las sugerencias. De hecho, en verdad agradezco tus interacciones y las interacciones de todas las personas. Estoy seguro que las mismas preguntas aportan a futuros visitantes del video, les da una perspectiva más completa de la técnica o tema que se está explicando :)

  • @Luk17a5
    @Luk17a5 Před rokem +1

    Muchísimas gracias Octavio!! Una consulta...un k muy grande estaría en situación de overfitting no??

    • @CodigoMaquina
      @CodigoMaquina  Před rokem

      Lucas gracias por tus comentarios y pregunta. El valor "apropiado" de k está enteramente asociado al dominio del problema y por supuesto a los datos. En algunos casos un valor relativamente pequeño será adecuado, en otros casos uno relativamente grande. Ahora sí que se determina en función de experimentación y acompañado de un experto en el negocio sobre cual se está creando el modelo. Gracias por interactuar con el contenido del canal :)

  • @darkstyllv9251
    @darkstyllv9251 Před rokem +1

    Muchas gracias Octavii. Una pregunta. Una vez que generamos por ejemplo dos cluster en el dataset, se debe implementar otros algoritmos de aprendizaje supervisado? (Ya que tendriamos una variable dependiente),o no es necesario? Muchas gracias

    • @CodigoMaquina
      @CodigoMaquina  Před rokem +1

      Hola @darkstyllv9251 gracias por tu pregunta tan interesante. Los clusters identificados en algunas ocasiones sí se llegan a utilizar para etiquetar/clasificar más instancias en algún tipo de aprendizaje semi-supervisado. En muchas otras ocasiones simplemente se utiliza para analizar los datos y presentarlos a las partes interesadas para ver qué valor de negocio podría llegar a tener la segmentación de los datos. Gracias por interactuar con el contenido del canal :)

  • @jortigasperu
    @jortigasperu Před 9 měsíci +1

    hola Octavio, una consulta.. cuando se tienen más características más de 2, como es que se calculan las distancias? gracias y saludos!!

    • @CodigoMaquina
      @CodigoMaquina  Před 6 měsíci +1

      @jortigasperu en el contexto de clustering existen diferentes tipos de distancias y muchas de ellas están definidas para dos o más dimensiones/características. Aquí va un video sobre distancias en clustering czcams.com/video/1g49iwKrV-U/video.html

  • @jortigasperu
    @jortigasperu Před rokem +1

    buenas, una consultita.. los centroides son puntos aleatorios del plano cartesiano o como es que aparecen?, gracias!!

    • @CodigoMaquina
      @CodigoMaquina  Před rokem +1

      Estimado José gracias por la pregunta. En la versión más simple de K-means, la posición inicial de los centroides es aleatoria (justo como lo indicas) aunque debo mencionar que existen optimizaciones de K-means donde ya no es así. Sigue con ese interés por estos temas :)

    • @jortigasperu
      @jortigasperu Před rokem +1

      @@CodigoMaquina gracias..

  • @fredyhuaynacho1403
    @fredyhuaynacho1403 Před 2 lety +2

    una consulta, en el caso que los datos tengan coordenadas X,Y,Z ( 3D) para un valor de un elemento por ejemplo
    %Cu, como seria??? gracias de antemano por la respuesta que me pudiera dar.
    soy de la carrera de ing. geológica

    • @CodigoMaquina
      @CodigoMaquina  Před 2 lety

      Gracias por la pregunta. Sería prácticamente el mismo proceso para 3 dimensiones. De hecho, k-means funciona para n dimensiones. Lo único que tendrías que hacer sería pasar los tres vectores de datos. Te recomiendo descargar el código de nuestro repositorio de GitHub y agregar una columna más ó mejor aún agregar tus datos y ver el resultado. Solo recuerda que es muy importante que los datos estén escalados. Aquí va el vínculo al código:
      github.com/CodigoMaquina/code/blob/main/machine_learning_python/k-medias.ipynb
      Gracias por ver el canal :)

    • @fredyhuaynacho1403
      @fredyhuaynacho1403 Před rokem

      En el caso que quisiera aplicar para datos con coordenadas X, Y, Z, y que estos coordenadas son la ubicación de muestras de Oro, cobre y plata, y otros elementos más, y quisiera agrupar tomando en cuenta que puntos están cerca, pero también de esos datos sea similar en cuanto a los elementos como podría ser el oro o la plata

  • @enmanuelruiz544
    @enmanuelruiz544 Před rokem +2

    - Ya que K-means trabaja en basa números ¿Funcionaría con datos categóricos representados con números, es decir sexo: 1 o 2?
    - Si nos apoyamos en la normalización estos datos deberían tener la misma importancia sin importar lo pequeños que sean.

    • @CodigoMaquina
      @CodigoMaquina  Před rokem +1

      Gracias por la pregunta. Efectivamente, los datos categóricos se pueden convertir a datos numéricos y a partir de ahí se puede utilizar K-Means. Además, ciertamente, la estandarización y/o escalamiento de los datos es un proceso que comúnmente se realiza antes de introducir los datos a K-means. Gracias por interactuar en el canal :)

    • @enmanuelruiz544
      @enmanuelruiz544 Před rokem

      @@CodigoMaquina muchas gracias. Gracias a la explicación del video cree mi propia librería de kMeans en C#. Lo único con lo que no he podido dar es en cómo calcular la inercia del modelo. ¿Me explicarías?

  • @erikarmenta1110
    @erikarmenta1110 Před 8 měsíci +1

    Porque a mi me sale error al cargar el dataframe

    • @CodigoMaquina
      @CodigoMaquina  Před 6 měsíci

      @erikarmenta1110 podrían ser múltiples factores. Te recomiendo descargar el código de nuestro repositorio para descartar errores de sintaxis: github.com/CodigoMaquina/code/blob/main/machine_learning_python/k-medias.ipynb