K-Means Clustering with Python
Vložit
- čas přidán 5. 04. 2020
- 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/paypalme/rocio...
Download the files I use in the video on
github.com/rociochavezmx/Roci...
Buy me a coffee
www.buymeacoffee.com/i2hxzeo
Blog "Aprende Ciencia de Datos con Rocío Chávez": rociochavezml.com/
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 - Věda a technologie
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 ❤
Por lejos el mejor canal de ciencia de Datos. Impecable su explicación y claridad.
Excelente contenido, muy bien explicado. ¡Muchas gracias!
Gracias por tus aportes, sinceramente son de muchísimo valor y además de como lo explicas, mil gracias. Ganaste un seguidor +
que maravilla de vídeo, me encanta como explicas todo paso a paso
Wow! Súper detallado!
Muchas gracias por compartir tu conocimiento!
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
Excelente tutorial Rocio!! Me ha servido mucho! Te lo agradezco enormemente! Un abrazo!!!
Tantos tutoriales en internet y este es el primero que de verdad explica desde el cero como hacer esto, mil y un gracias.
Este es el mejor video de programación que eh visto en mis 6 años de carrera , muchísimas gracias eres una genio.
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ú.
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
Excelente explicación justo estoy usando ese método para un proyecto muchas gracias me ayuda mucho!!!
Muchas gracias, muy buena explicación :D
de las mejores explicaciones que he visto en muchos años programando
Me encanto, super bien explicado y en espanõl fue le éxito total! excelente trabajo
Muy buena explicación...Gracias por tan excelentes contribuciones..
Sigue compartiendo contenido Rocío, es muy interesante. Saludos!
Maravillosa explicación. Dios bendiga tu inteligencia Rocío.
Excelente video. Muy bien explicado y ejemplificado. Me suscribo.
simplemente hermoso, gracias full ayuda
Excelente tutorial, muy bien explicado, muchas gracias
Este video es oro! gracias!
Excelente! Principalmente como resolviste el hecho de que tengan muchas variables.
Excelente video y todo muy muy bien explicado. Muchas gracias
Espectacular explicación, y excelente voz.
Muchas gracias por compartir!!! Excelente video!!!
Parabéns, sua didática é extremamente simples e ao mesmo tempo muito explicativa. Top.
Como siempre Rocío excelente explicando..
Muy buen video y eres muy buena explicando, muchas gracias
Buenísimo video!
Hermoso, bello tutorial 👏👏👏👏👏
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.
Muchas gracias! Se nota que sabe mucho. Me suscribo.
Muchas gracias por el video, muy buena y clara explicación.
Excelente aporte este video, todo muy claro :)
Genial video, muchas gracias.
Que excelente explicación y mayor aún la aportación!, muchísimas gracias.
Jorge Márquez Salguero es un placer! ;)
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 CZcams 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 ;)
Muy buen video! Siempre explicado de una manera muy clara.
Cynthia! Muchas gracias ;)
que buen video me salvaste de un taller de business analyst en la universidad
¡Gracias! Fue una explicación muy clara.
Excelente caso de uso!
increíble video :)
Buena explicación, felicitaciones y gracias por compartir tus conocimientos.
Es un placer Mijael! ;)
Señora Rocío es una crack, mi profesor no me enseñó de la mejor manera. Pero usted es un pan de dios❤️
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.czcams.com/video/n98fnSEoRiM/video.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
Muchas gracias por compartir tus conocimientos, saludos
Gustavo Escaff es un placer ;)
Excelente video.
Excelente video
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! ;)
Muchisimas gracias !
Bien explicado! :)
Muchas gracias!
Muchas gracias Doctora 👍🏼. Saludos desde Chile
Es un placer Marco. Saludos desde México!!! ;)
increible tutorial
muchísimas gracias
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!! ;)
Thank you very much!!!
Excelente contribucion, gracias espero igual compartir c
Muchas gracias por compartir Nilton! ;)
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 ;)
Muito obrigado, este vídeo me ajudou bastante.
Parabéns a explicação está clara.
Muchas gracias 👏🏿👏🏿👏🏿👏🏿
É um prazer Macaio! ;)
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 .
Excelente
Muy chévere!
Muchas gracias Juan Antonio! ;)
Muchas gracias por el gran aporte, creo que faltó revisar el tema de centroides
Gracias
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 czcams.com/play/PLUofJx5RUeFqAIVdzfnJayenwZFEGtCmg.html
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 ;)
Gracias Rocio , una pregunta , se puede tambien hacer Kmeans con datos que tienen coordenadas XYZ osea datos espaciales, de ser asi como se haria
Cómo puedo interpretar el componente 1 y 2 respecto a mis variables iniciales? quisiera ver qué regla siguen
Como puedo saber que variables a considerado como component
es principales
Buenazo
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)
Excelente video
Podría agregar la explicación de como observar los centroides de cada Cluster?
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
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… czcams.com/video/n98fnSEoRiM/video.html
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.
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
Thanks!
Muchas gracias Cynthia! ;)
hola, porque pones en el bucle for range(1,11); ?????
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
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 ;)
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?
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.
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
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 🙂
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?
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!
Saludos Roció y que tan valido sería utilizar otro método de representación como un MDS o PCO para evitar la forma de herradura que suele originar el PCA. Gracias
Hola César! No conozco los métodos que me mencionas, por lo que no sabría decirte :(
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
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.
Gracias por el vídeo. Te hago una consulta: ¿no es conveniente utilizar PCA antes de entrenar el modelo? Te lo pregunto porque siempre lo he visto de esa forma: crear los componentes principales (como por ejemplo con el dataset del cancer de mamas, que tiene 30 features) y luego pasar esos componentes al .fit del kmeans (o del algoritmo que sea). Desde ya muchas gracias por tu respuesta.
Hola Damián, también lo puedes hacer utilizando los componentes principales, solamente debes asegurarte de que los componentes que utilices representen en un buen porcentaje a las variables originales
Hola profesora, como puedes calcular las distancias medias de cada cluster?, gracias...
Hola Rubén! Puedes incluir este código después de que realizaste el K-Means. Al objeto en donde guardamos el resultado del K-Means lo llamamos "clustering" y los centroides están en cluster_centers_ del objeto clustering. Te los dá en órden
centers = clustering.cluster_centers_
centers
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.
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
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
nice
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