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

แชร์
ฝัง
  • เผยแพร่เมื่อ 17 ต.ค. 2024

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

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

    👉 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

  • @crsmoran
    @crsmoran 8 หลายเดือนก่อน +4

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

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

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

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

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

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

      @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 11 หลายเดือนก่อน +1

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

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

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

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

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

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

      @virginiatenoriovelasquez2019 muchas gracias por tus comentarios :)

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

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

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

      ¡Muchas gracias por tus comentarios! :)

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

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

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

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

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

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

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

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

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

    Excelente felicitaciones súper

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

  • @JoseTallarico
    @JoseTallarico 2 หลายเดือนก่อน

    Hola Octavio, muchas gracias por compartir tu conocimiento y ademas destacto tu forma de desarrollar y explicar el contenido, realmente brillante. Cordial saludo desde Argentina!!

  • @alberthpinco3543
    @alberthpinco3543 2 หลายเดือนก่อน +1

    Que buena explicación muchas gracias

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

      Muchas gracias por comentar!!!

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

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

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

    Eres un profesional, felicidades, gran trabajo

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

      Muchas gracias por tus comentarios :)

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

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

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

      Muchas gracias por tus comentarios :)

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

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

  • @SantiagoMatiasMartinez-p3i
    @SantiagoMatiasMartinez-p3i 8 หลายเดือนก่อน

    que gran clase profesor, la verdad explica genial, felicidades

  • @victorgarcia-wn9yt
    @victorgarcia-wn9yt 6 หลายเดือนก่อน

    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

  • @carlosf.2927
    @carlosf.2927 3 หลายเดือนก่อน +1

    Demasiado bien explicado!! gracias.

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

      Muchas gracias!!!!

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

  • @KenyaVega-v5b
    @KenyaVega-v5b 7 หลายเดือนก่อน

    excelente explicacion. muchas gracias por subir estos videos

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

    Que excelente explicación!

    • @CodigoMaquina
      @CodigoMaquina  ปีที่แล้ว +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!!!

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

    Excelente video.

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

      ¡Muchas gracias por escribirnos!

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

    Excelente explicación!

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

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

  • @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: th-cam.com/video/HMis89lGdkA/w-d-xo.html). Gracias por ver el canal e interactuar :)

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

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

    Gracias campeón....

  • @edwardbrandt4868
    @edwardbrandt4868 4 หลายเดือนก่อน

    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.

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

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

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

  • @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 2 ปีที่แล้ว

      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

  • @tomasscopelliti9362
    @tomasscopelliti9362 2 ปีที่แล้ว +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  2 ปีที่แล้ว +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: th-cam.com/video/x-7BHjMA15M/w-d-xo.html

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

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

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

    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  2 ปีที่แล้ว +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 :)

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

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

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

    Buen video!

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

      @johnalexcasanacruzado4673 gracias. Feliz Año!

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

  • @jortigasperu
    @jortigasperu ปีที่แล้ว +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  9 หลายเดือนก่อน +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 th-cam.com/video/1g49iwKrV-U/w-d-xo.html

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

    Crack!

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

    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  2 ปีที่แล้ว +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 :)

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

  • @erikarmenta1110
    @erikarmenta1110 11 หลายเดือนก่อน +1

    Porque a mi me sale error al cargar el dataframe

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

      @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