K-Means Clustering with Python
HTML-код
- Опубликовано: 5 сен 2024
- If you find the video valuable for you and you want to support my channel, you can do it in my paypal account:
www.paypal.com...
Download the files I use in the video on
github.com/roc...
Buy me a coffee
www.buymeacoff...
Blog "Aprende Ciencia de Datos con Rocío Chávez": rociochavezml....
In a previous video I told you about
one of the unsupervised machine learning
technique called hierarchical clustering
which is useful when you have less than 10,000 individuals or elements to analyze
In this video I will show you another
clustering technique called the K-Means method
One of the advantages that this method has,
compared to hierarchical clustering, is that it has the ability to analyze databases with more than 10,000 individuals.
However, in order to carry out the K-means method
it is necessary to know in advance the number of clusters
in which we want to divide the elements contained in the
database
If you don't know this information, in the video I show you a technique called "Jambu Elbow", which will help you finding the optimal number of clusters to get
Obtén el código de éste y todos mis videos en www.patreon.com/rociochavezcienciadedatos
La mejor explicación en español sobre cómo graficar el codo y los cluster , simplemente la mejor ❤
Excelente video. Sin embargo, quiero recomendar un par de cositas en clustering: 1) La métrica WCSS mide la compactación global de todos los grupos o clusters. Sin embargo, esta métrica es poco eficiente para medir la separabilidad entre clusters, lo cual, representa una desventaja considerable. Otro problema de WCSS es que está basado en distancia Euclidiana, donde calcula la distancia entre los puntos que pertenecen a un cluster con partición dura con respecto al centroide de ese cluster, pero ignora que tan correlacionado está los puntos al centro. Por esta razón, desde el año 2010, se han propuesto mejoras del WCSS basado en correlación que permite medir la cantidad de superposición entre clusters. Lo anterior ayuda a mejorar el cálculo de la compactación entre clusters. 2) Es importante mencionar que el K-means es ineficiente para datos con más de 500.000 muestras (comprobado experimentalmente). Para esto, se ha propuesto el mini-batch K-means, que permite agrupar datos con gran cantidad de muestras. 3) Debes mencionar que K-means no es recomendable cuando los datos tiene outliers, debido a que el resultado del agrupamiento no suele ser representativo debido a la presencia de correlaciones intra-clase que afecta la separabilidad entre clusters. 4) Con solo usar WCSS no es suficiente para asegurar la calidad del agrupamiento de datos. En este caso, se requiere del uso de varias métricas de validación interna para clustering que permita asegurar el número apropiado de clusters. Lo anterior, se debe considerar para tener mayor seguridad de la elección del mejor modelo K-means. 5) Recomiendo explorar otras métricas como el índice de Dunn, el índice Davies-Boudin, etc...
Sugiero, además, hacer un video explicando las métricas de validación interna y externa en Clustering, considerando las ventajas y las limitantes de cada uno de ellos. Es importante explicar qué métricas son más eficientes para escenarios Big Data y cuáles no.
Muchas gracias por tus aportaciones Javier, las tomaré en cuenta para ir profundizando más en los siguientes videos ;)
Hola de nuevo Javier! Sé que te contesté hace ya tiempo este comentario, pero quiero aprovecharlo para dar a conocer el video con la explicación más detallada que hice acerca de k-means profundizando en los puntos que me comentaste. Este se encuentra en m.ruclips.net/video/n98fnSEoRiM/видео.html. Una vez más, gracias por la retroalimentación ;)
@@RocioChavezCienciadeDatos Hola. Muchas gracias por compartir el enlace. Lo voy a mirar en la noche para ver que más ideas se me ocurre para aportar al tema del clustering.
yo pienso que para este caso en particular si es una buena solución, si obtienes un mejor resultado con otro método sería muy útil que nos pudieras compartir tu código en un colab notebook
Por lejos el mejor canal de ciencia de Datos. Impecable su explicación y claridad.
Tantos tutoriales en internet y este es el primero que de verdad explica desde el cero como hacer esto, mil y un gracias.
Si te fue de utilidad este video y deseas ayudarme a seguir creando contenido, puedes hacerlo de varias formas:
- Dando clic en "Me gusta" para incrementar la probabilidad de que el algoritmo de RUclips promueva mi contenido
- Dejándome un comentario
- Suscribiéndote a mi canal
- Compartiendo mi canal en tus redes sociales
- Presionando el ícono "Gracias" y haciendo una donación
Gracias por el video y la explicación tiene algunos ejemplos aplicados a pesquerías?
Excelente explicación. Por favor me indicarías qué análisis realizar para saber qué tan bien predijo el modelo. El método metrics sirve para esto?
Gracias, me fue de utilidad para entender el método kmeans.
Muchas gracias por la información, tengo una consulta. Como puedo saber cual de todas las variables es el componente 1 y 2
Hola José! Las variables no se corresponden directamente con las componentes. Estoy por crear un video explicando el Análisis de Componentes Principales para platicarles con detalle qué representan los componentes. Espero tenerlo listo muy pronto ;)
de las mejores explicaciones que he visto en muchos años programando
Este es el mejor video de programación que eh visto en mis 6 años de carrera , muchísimas gracias eres una genio.
Maravillosa explicación. Dios bendiga tu inteligencia Rocío.
Felicitaciones por la explicación paso a paso del método, realmente excelente, lo mejor que he visto hasta ahora, me aclaraste un millon de dudas
Espectacular explicación, y excelente voz.
Señora Rocío es una crack, mi profesor no me enseñó de la mejor manera. Pero usted es un pan de dios❤️
Hola soy Cris rios de facebook. Viendo tus videos he aprendido mucho. Ya empece a trabajar como científico de datos para una empresa.
Muchas Felicidades Cris! Éxito en tu nuevo trabajo ;)
Es lo mas detallado y claro que vi en como implementar el algoritmo en Python, si bien creo que la mayoria se desenvuelve masomenos bien en ingles el que este en español es una gran ayuda para hacer foco en la explicacion y no pensar a la par en la correcta traduccion/interpretacion. Felicitaciones y muchas gracias por el gran aporte. Saludos.
Muchas gracias por tus palabras Ernesto! ;)
Rocio , muchas gracias por darnos una explicación tan clara a personas como yo que recién comienzan en este fantástico mundo de Machine Learning y los modelos no Supervisados. Saludos desde Perú.
Estoy entrando a una materia de la maestría donde vamos a ver estos temas, y tus videos me serán súper utiles, muchas gracias una vez más.
Saludos
Hola Beto! Me da gusto que te sean de utilidad los videos. Éxito en tu maestría!! ;)
Eres una genia, me has salvado mi examen, adapte mi base de datos a tú video , tuve que dropear más datos pero al final todo resulto muy bien, muchas gracias por hacer más sencillo el aprendizaje del clustering :D
Thank you very much Rocio Chavez Ciencia de Datos.
Though I don't understand your language, I understand the codes. It helped me a lot to complete my assignment.
Sigue compartiendo contenido Rocío, es muy interesante. Saludos!
Gracias por tus aportes, sinceramente son de muchísimo valor y además de como lo explicas, mil gracias. Ganaste un seguidor +
Me encanto, super bien explicado y en espanõl fue le éxito total! excelente trabajo
Muchas gracias! Se nota que sabe mucho. Me suscribo.
que buen video me salvaste de un taller de business analyst en la universidad
Buena explicación, felicitaciones y gracias por compartir tus conocimientos.
Es un placer Mijael! ;)
Excelente contenido, muy bien explicado. ¡Muchas gracias!
que maravilla de vídeo, me encanta como explicas todo paso a paso
Para llevar a cabo el pre-procesamiento de tus datos y poder obtener información confiable en tus análisis, visita mi lista de reproducción llamada Pre-procesamiento de Datos en Python ruclips.net/p/PLUofJx5RUeFqAIVdzfnJayenwZFEGtCmg
Por favor deseo estudiar todos los videos de tu canal, recomiendas un orden? puedes hacer por favor un video sugiriendo el orden?
@@rubendariojaramillo4246 Hola Rubén, En mi página web hay una pestaña llamada BLOG en la que están los videos organizados por temas. Mi página es rociochavezml.com Espero que esta información te sea de utilidad ;)
Muchas gracias Doctora 👍🏼. Saludos desde Chile
Es un placer Marco. Saludos desde México!!! ;)
Excelente caso de uso!
Si estás interesado en adquirir alguno de mis cursos en línea, vista mi página web rociochavezml.com/cursos-en-linea/ ;)
Parabéns, sua didática é extremamente simples e ao mesmo tempo muito explicativa. Top.
Muy buena explicación...Gracias por tan excelentes contribuciones..
Excelente! Principalmente como resolviste el hecho de que tengan muchas variables.
Muy buen video! Siempre explicado de una manera muy clara.
Cynthia! Muchas gracias ;)
Muy buen video, muchas gracias por tu excelente explicación y sobre todo por tu paciencia. En mi proyecto personal aplico PCA en 2 componentes. Sin embargo, no tengo los datos separados por colores, están mezclados. No entiendo que estaría haciendo mal.
Hola Tomas! Probablemente tu datos no sean separables linealmente
Wow! Súper detallado!
Muchas gracias por compartir tu conocimiento!
Excelente explicación justo estoy usando ese método para un proyecto muchas gracias me ayuda mucho!!!
Muchas gracias, muy buena explicación :D
Excelente tutorial Rocio!! Me ha servido mucho! Te lo agradezco enormemente! Un abrazo!!!
Muchas gracias por compartir tus conocimientos, saludos
Gustavo Escaff es un placer ;)
Excelente video y todo muy muy bien explicado. Muchas gracias
Excelente contribucion, gracias espero igual compartir c
Muchas gracias por compartir Nilton! ;)
Explicação mais que perfeita. Obrigado.
Muchas gracias por el video, muy buena y clara explicación.
tus vídeos son muy buenos, muchas gracias (tengo una sugerencia, siempre mencionas lo de markdown y lo del encabezado creo que puedes obviarlo o dejar una referencia a otro vídeo explicando el tema)
Muchas gracias por la sugerencia, lo hago pensando en las personas que solamente vean uno de los videos para que lo puedan aplicar directamente y se animen a desarrollar código más fácilmente.
@@RocioChavezCienciadeDatos Gracias, favor siga explicando de la misma manera sin obviar, explica super bien.
Si quieres conocer mas acerca del método K-Means, puedes ver el video Clustering con K-Means. Explicación Matemática y Mucho más… ruclips.net/video/n98fnSEoRiM/видео.html
Que excelente explicación y mayor aún la aportación!, muchísimas gracias.
Jorge Márquez Salguero es un placer! ;)
Como siempre Rocío excelente explicando..
Excelente video
Muchas gracias por compartir!!! Excelente video!!!
Excelente video. Muy bien explicado y ejemplificado. Me suscribo.
¡Gracias! Fue una explicación muy clara.
Muchas gracias por el gran aporte, creo que faltó revisar el tema de centroides
Buenísimo video!
Excelente tutorial, muy bien explicado, muchas gracias
Muy buen video y eres muy buena explicando, muchas gracias
Gracias maestra! le comparto que estoy llevando un diplomado en Inteligencia artificial y usamos los mismos metodos pero con otro tipo de metricas en el PCA que en lo personal no entendi , y vi otro comentario por aca sobre la metrica WCSS, mi duda es la siguiente:
Què material de apoyo o materia (estadistica, probabilidad, calculo, etc) me ayudarian a entender este tipo de metricas?
En cuanto a codigo y su implementacion me quedo muy claro ahora con su explicacion. Gracias de nuevo y saludos!
Hola Diego! Estoy pensando ahondar mas en la explicación del PCA. Si me dices las métricas en el PCA que no entendiste, las podría incluir en mi próximo video acerca del tema
En cuanto al material de apoyo, el PCA tiene que ver con estadìstica. En esta pagina puedes encontrar mas información al respecto www.cienciadedatos.net/documentos/35_principal_component_analysis
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 la media de esos datos sea similar osea de los grupos que se generen.
Hola Fredy, la media de los grupos que se generan vienen a ser los centroides. En el video "Clustering con K-Means. Explicación Matemática y Mucho más…" explico más acerca de éstos
Los centroides los puedes obtener agregando la línea de código clustering.cluster_centers_ después de haber aplicado el modelo k-means a los datos (min. 16:50 del video), es decir, de haber llevado a cabo la segmentación
increible tutorial
Excelente aporte este video, todo muy claro :)
Excelente video.
Hermoso, bello tutorial 👏👏👏👏👏
muchísimas gracias
Excelente video!! .. Tengo una consulta, cuando pago la prueba PCA, tanto en la columna de cluster, componente 1 y componente 2, me aparecen valores basura (NaN). A que se debe esto? (Estoy trabajando con un dataset propio)
Muy bueno el video!. cómo pasamos a producción, a que se haga automático, imagino que es un python que lo haga todo, consu respectivo resultado, me comentas
Hola Rocio, muchas gracias por tu exlicacion tan clara. De verdad que se aprende contigo. Tengo una pregunta. Tienens algun video de como crear un indice utilicando PCA, mil gracias
Hola Rómulo! Todavía no he creado el video acerca de la creación del índice utilizando PCA. Solamente tengo todo lo correspondiente a la explicación matemática del PCA y algunos ejemplos de aplicación 🙂
Saludos y buena noche Rocio, en el video anterior de cluster jerárquico, no realizaste normalización, quisiera saber si fue por algún descuido, o porque las calificaciones de los estudiantes correspondían al mismo orden de magnitud, que eran números entre 0 y 10, saludos y gracias.
Hola! Fue porque ya no era necesario debido a que, como bien lo mencionas, todas las calificaciones se encuentran en la misma escala
simplemente hermoso, gracias full ayuda
Hola, muy buena explicacion!
Tenia dos dudas acerca del video que agradecería que pudieras responder,
1) Como consigo que al exportar la información de nuevo a formato .csv me salga cada columna separa? a mi me sale toda la información de manera continuada en una sola columna separada por comas.
2) Aunque sepamos que hay tres cluster claramente definidos como sabemos que información contiene cada cluster? en base a que están clasificados, que diferencia un cluster de otro?
Gracias por tu tiempo.
Hola Diego! Acerca de tus dudas, me puedes enviar un mensaje a rociochavezmx@yahoo.com con el código que utilizaste para exportar tu información a csv y para explicarte como podrías obtener los centroides de cada cluster para que veas que es lo que caracteriza a cada uno, por favor?
Muito obrigado, este vídeo me ajudou bastante.
Parabéns a explicação está clara.
Muchas gracias 👏🏿👏🏿👏🏿👏🏿
É um prazer Macaio! ;)
Excelente video
Podría agregar la explicación de como observar los centroides de cada Cluster?
Hola Rocío, buenísimo tu video. Muchísimas gracias por esta clara explicación!
Tienes algún video en donde hables más a profundidad del análisis de componentes principales? Me parece que lo mencionas en alguna parte de este video. Saludos.
Hola Lupita! Gracias por tus palabras acerca del video. En el canal tengo varios videos con respecto al ACP, sólo que no he podido crear uno en el que explique como se calcula, pero sí hablo acerca algunas aplicaciones útiles ;)
Este video es oro! gracias!
Muchisimas gracias !
Genial video, muchas gracias.
Buenazo
increíble video :)
Extraordinario video me encanta, tengo una pregunta, el paquete que usas para graficar matplotPyt es gratuito y de código abierto o tiene costo? Está incluído en Anaconda?
Gracias por este video y lo voy a compartir en mis redes sociales
Hola Adalberto! Todos los paquetes están en Anaconda. Yo tengo instalada la versión 2019.10 para Windows. Gracias por compartir ;)
@@RocioChavezCienciadeDatos muchas gracias por su respuesta y me parece excelente que todo sea opensource, yo prefiero usar Linux, tengo Lubuntu 19.10, gracias por este video y por contestar la pregunta saludos y que viva el código abierto!
Gracias
buen video, pero faltaron mas métricas, no vi nada de coeficiente de silueta, calinski harabaz ni esas. Me gustaría haber visto alguna métrica para evaluar cuantitativamente esos clústers
hola en primer lugar me gustan muchos tus videos, pero tengo una duda cuando normalice un dataframe, me soltó 15 valores nulos, que antes no tenia, ahora al ejecutar el código para codo me arroja un error de valores nan o infinitos, que puedo hacer en este caso.
hola, porque pones en el bucle for range(1,11); ?????
Cómo puedo interpretar el componente 1 y 2 respecto a mis variables iniciales? quisiera ver qué regla siguen
Muy bueno Rocío, muchas gracias por compartir... me enganche con tu explicación Rocío. Solo una consulta, que variables aportan a la clusterización de los vinos?
Hola Jean! Para responder a tu pregunta habría que ver cuales son los centroides, es decir, los valores promedio de las variables de cada cluster
Thank you very much!!!
Excelente
Gracias Rocio , una pregunta , se puede tambien hacer Kmeans con datos que tienen coordenadas XYZ osea datos espaciales, de ser asi como se haria
Hola buen día, excelente video me está ayudando mucho. Una duda, mi maestro me pidió aplicar el algoritmo k-means pero aparte de eso me pidió validar los datos con una matriz de confusión o fscore ¿Cuáles datos serían lo "predecidos"? ¿Los valores de la columna k_means_clusters?
También me pidió determinar y graficar el mejor grupo (k) ¿Sabe a qué se refiere?
Estimada, muchas gracias por su información, fue de mucha ayuda, pero tengo una consulta uno podria agregar condiciones al los cluster; ej que las demandas de los cluster sea parecida .
Como puedo saber que variables a considerado como component
es principales
Muchas gracias Rocio por tan magnifico video, pero tengo una pregunta, ya que se supone que no sabemos cuantos clusters queremos crear , porque razon le decimos al programa que cree 10 Clusters? , mi unica conclusion es que lo escribes de manera aleatoria y luego en el codo de jambu decides hasta que numero de clusters quieres llegar... Es esto correcto o me equivoco?
Hola Kevin! Así es, tu le puedes pedir que te calcule tantos clusters cómo filas tengas, sin embargo, es preferible comenzar con pocos clusters para no consumir muchos recursos y si ves que no se formó el codo, aumentas la cantidad de clusters a formar.
Hola una consulta, supongamos que tengo un modelo como este en produccion explotado por un aplicativo, como hago para que al pasarle una etiqueta, me devuelva el cluster al cual pertenece una determinada etiqueta?, gracias
Y como se sabe a que variable pertenece cada uno de los tres colores que arroja el PCA? como se interpreta este ejemplo en particular?. Muchas gracias y excelente vídeo :)
Hola Felipe! El cluster 0 se colorea de azul, el 1 de verde y el 2 de naranja, se sigue la secuencia que le diste a los colores en el objeto color_theme. En este ejemplo, los puntos que tienen valores negativos tanto en la componente principal 1 como en la dos pertenecen al cluster 1, por lo que se colorearon de verde
Gracias por el video. Tengo una duda espero me pueda(n) ayudar. Quiero segmentar clientes y tengo variable categóricas y númericas. En un principio intenté transformar las categóricas a numéricas ,pero investigando me tope con el algoritmo K-Prototypes. Me gustaría que me brinden información alguna sobre el proceso de este algoritmo ,(preprocesamiento,elección del número del clúster y verificación del modelo), si alguno ya ha trabajo con este algoritmo. Saludos
Hola! No cuento con información acerca del algoritmo que mencionas :(
Si gustas envíame un correo a rociochavezmx@yahoo.com para compartirte algo de literatura acerca de clustering cuando se cuenta con una combinación de variables numéricas y no numéricas
Bien explicado! :)
only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices , in the part of color_theme with np.array, help me pls
Hi, i was the same problem my friend. One solution is the use of the way that you normalized your data; You must normalized your data with 1-2 lines of code (very simple), search the code ! . Remember... A data normalized correctly is when the variance es igual 1 and the plus of the Main es 0.
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
Hola Elizabeth! Yo lo que haría sería manejarlo como dos clientes, por ejemplo, Juan1 y Juan2 para que no se repitan los individuos y después de llevar a cabo el clustering analizarlo con detalle con base en otras variables que tengas (por ejemplo el día o la hora de la visita a tu página) para saber qué es lo que podría estar influyendo en su cambio de intereses
Rocio muchas gracias, si tengo mas de 100,000 datos puedo usar el K means , es recomendable?. Saludos
Hola! sí podrías utilizarlo, te recomiendo que veas el video en donde explico más detalles acerca de éste algoritmo: ruclips.net/video/n98fnSEoRiM/видео.html
@@RocioChavezCienciadeDatos gracias
Buen dia, una consulta, en el video veo que una vez realizas el kmeans, se lo aplicas a la data original, y es aqui que me salta la duda, he leido e investigado un poco, despues de esos aplicas una reduccion de dimensionalidad por PCA, entiendo para la facil visualizacion de los patrones en 2D, sin embargo encuentro, que primeramente lo que se deberia hacer es la reduccion de la dimensionalidad y luego si la clusterizacion, podrias por favor aclararme esa duda. Gracias
Hola Julián! Efectivamente, cuando se tienen muchas características, es preferible llevar a cabo la reducción de la dimensionalidad con el PCA antes de llevar a cabo el algoritmo, principalmente con la finalidad de reducir los tiempos de procesamiento y los recursos computacionales, o bien, de darnos una idea de cómo son nuestros datos para ver cuál técnica de clustering aplicar. En el video "Análisis de Componentes Principales | Explicación Matemática" platico un poco más al respecto
Muchas gracias por tu video profe. Yo tengo una duda, en el modelo que tu haces todas las variables son numéricas pero cómo sería en el caso de que tengamos variables con fechas o tipo string? Te gradecería mucho tu respuesta
Es necesario que trabajes en el pre_procesamiento de tus datos, con EDA (Exploratory Data Analysis) y (Feature engineering) para transformar tus datos sin procesar en características que se pueden usar para crear tu modelo predictivo usando ML. Así al final tendras una base de datos util para tu modelo.
en ese caso , lo que hice yo fue dropear todas las columnas que no me servian, con .drop y en el axis="columns" que te permite escribir el nombre de las columnas que quieres dropear en corchetes por ejemplo vinos_variables = vinos.drop(["nombre","edad","fecha_nacimiento"],axis="columns") para que así trabajes solo datos númericos.
Bien si eso te sirvió y no perdiste información valiosa, está bien. El riesgo de eliminar datos de filas I columnas, es que el modelo podría no ser tan eficiente si lo usas para predicaciones. Saludos.