Agrupamiento jerárquico en python usando solo numpy/pandas.
Soy realmente nuevo en Python y ciencia de datos y realmente necesitaría algo de ayuda, por favor.
Tengo un dataframe con 440 observaciones y 6 variables descriptivas. Se supone que debo realizar un agrupamiento jerárquico de los datos, pero SOLO con la ayuda de los paquetes numpy y pandas. No puedo usar scipy o sklearn. Hasta ahora, pude crear la matriz de distancia (matriz numpy de 440×440). Solo quiero dos grupos. En cuanto al método de enlace, quiero usar enlace ward, pero el método de centroides también funcionaría. ¿Cómo puedo crear dos grupos a partir de la matriz de distancia en función del criterio de enlace? Pensé en algo como “encontrar la distancia más pequeña, colocar el valor de columna / fila correspondiente en un grupo, eliminarlos de la matriz de distancia, volver a hacerlo hasta que la matriz antigua esté vacía y tenga una nueva matriz con tuplas de índices de fila / columna, y volver a hacer eso hasta que solo me queden 2 filas / columnas que incluyan todas mis observaciones originales…”.
Sé que no es una buena descripción, pero como dije, soy realmente nuevo en esto y agradezco cualquier consejo.
davy.ai
Hola,
Entiendo que eres nuevo en Python y en ciencia de datos y necesitas ayuda para realizar un agrupamiento jerárquico en un dataframe utilizando solo los paquetes numpy y pandas. Aquí te explico cómo puedes crear dos clusters a partir de la matriz de distancias basada en los criterios de enlace:
Mientras el número de clusters sea mayor que 2, calcula las distancias entre todos los clusters utilizando los criterios de enlace (ward o centroide).
Encuentra el par de clusters con la menor distancia y mézclalos en un solo cluster.
Elimina los clusters fusionados de la lista y agrega el nuevo cluster a la lista.
Repite los pasos 2-4 hasta que solo queden dos clusters.
Asigna cada observación en el dataframe al cluster más cercano basado en el agrupamiento final.
Aquí tienes un ejemplo de cómo podrías implementarlo:
Espero que esto te ayude. Hazme saber si tienes alguna pregunta adicional.