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

Поділитися
Вставка
  • Опубліковано 13 лип 2024
  • Explicación visual del algoritmo K-medias (o K-means) para detectar clusters y su programación utilizando Scikit-Learn de Python. Además, se incluye código para visualizar los clusters y se explica el método del codo para determinar el número k de clusters.
    Para citar este recurso educativo utiliza la siguiente referencia:
    Gutiérrez-García, J.O. [Código Máquina]. (2021, 6 de Diciembre). K-means (o K-medias) para detección de Clusters: Algoritmo e implementación con Python [Video]. UA-cam. [Incluye aquí la URL del video].
    ********************************************
    Para guiar tu aprendizaje, en este vínculo ( • Curso de Inteligencia ... ) se encuentra una guía secuencial para aprender:
    1. Programación Básica con Python;
    2. Manejo de Datos;
    3. Visualización de Datos;
    4. Análisis de Datos; y
    5. Aprendizaje de Máquina y Ciencia de Datos.
    ********************************************
    Índice del Video:
    0:00 Introducción
    1:05 Contexto y algoritmo
    12:56 Creación de modelo K-means
    22:00 Visualización de clusters
    28:11 Determina k con el método del codo
    Apoya a Código Máquina dando un Like, con un Super Gracias o visitando nuestra tienda en:
    / shop
    El código y datos del video están disponibles en GitHub github.com/CodigoMaquina/code
    ⭐ De la co-fundadora de Código Máquina, productos de cosmética natural SINHAKI:
    www.amazon.com.mx/s?srs=12094...
    #MachineLearning #AprendizajeAutomático #ScikitLearn #Python #AprendizajeDeMaquina #SkLearn #AprendizajeNoSupervisado #Kmeans #Kmedias

КОМЕНТАРІ • 81

  • @CodigoMaquina
    @CodigoMaquina  2 роки тому +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 5 місяців тому +4

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

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

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

  • @carlosf.2927
    @carlosf.2927 2 дні тому

    Demasiado bien explicado!! gracias.

  • @user-kt9jr3dw2q
    @user-kt9jr3dw2q 7 місяців тому +2

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

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

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

  • @ivan-rivera
    @ivan-rivera Рік тому +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  Рік тому +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 :)

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

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

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

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

  • @user-fo4rk4ct8y
    @user-fo4rk4ct8y 4 місяці тому

    excelente explicacion. muchas gracias por subir estos videos

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

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

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

      ¡Muchas gracias por tus comentarios! :)

  • @diegohd4266
    @diegohd4266 4 місяці тому

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

  • @user-on5yw9qb2d
    @user-on5yw9qb2d 5 місяців тому

    que gran clase profesor, la verdad explica genial, felicidades

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

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

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

    Excelente video.

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

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

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

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

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

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

  • @virginiatenoriovelasquez2019
    @virginiatenoriovelasquez2019 11 місяців тому +1

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

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

      @virginiatenoriovelasquez2019 muchas gracias por tus comentarios :)

  • @klebermezones8820
    @klebermezones8820 3 місяці тому

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

  • @jhonchavez6669
    @jhonchavez6669 9 місяців тому +1

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

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

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

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

    Gracias campeón....

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

    Eres un profesional, felicidades, gran trabajo

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

    Excelente explicación!

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

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

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

    Crack!

  • @ernestopetinozappala3885
    @ernestopetinozappala3885 9 місяців тому +1

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

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

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

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

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

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

      Juan Carlos muchas gracias por tus palabras :)

  • @YouTubeMinchi
    @YouTubeMinchi 10 місяців тому +1

    Que excelente explicación!

    • @CodigoMaquina
      @CodigoMaquina  9 місяців тому +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!!!

  • @johnalexcasanacruzado4673
    @johnalexcasanacruzado4673 9 місяців тому +1

    Buen video!

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

      @johnalexcasanacruzado4673 gracias. Feliz Año!

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

    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.

  • @daanaortiz8303
    @daanaortiz8303 2 роки тому +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  2 роки тому +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 :)

  • @victorgarcia-wn9yt
    @victorgarcia-wn9yt 3 місяці тому

    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

  • @juanpablocruz6225
    @juanpablocruz6225 2 роки тому +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  2 роки тому +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: ua-cam.com/video/HMis89lGdkA/v-deo.html). Gracias por ver el canal e interactuar :)

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

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

    • @CodigoMaquina
      @CodigoMaquina  2 роки тому +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 :)

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

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

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

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

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

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

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

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

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

    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  Рік тому +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 :)

  • @darkstyllv9251
    @darkstyllv9251 Рік тому +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  Рік тому +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 :)

  • @martintusco3129
    @martintusco3129 Рік тому +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  Рік тому

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

  • @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  Рік тому +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 :)

  • @tomasscopelliti9362
    @tomasscopelliti9362 Рік тому +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  Рік тому +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: ua-cam.com/video/x-7BHjMA15M/v-deo.html

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

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

  • @jortigasperu
    @jortigasperu 8 місяців тому +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  6 місяців тому +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 ua-cam.com/video/1g49iwKrV-U/v-deo.html

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

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

    • @CodigoMaquina
      @CodigoMaquina  Рік тому +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 Рік тому +1

      @@CodigoMaquina gracias..

  • @enmanuelruiz544
    @enmanuelruiz544 Рік тому +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  Рік тому +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 Рік тому

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

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

      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 Рік тому

      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

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

    Porque a mi me sale error al cargar el dataframe

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

      @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