Robin Angel Romero
PreguntaHola compañeros, intente implementar el algoritmo, pero quedo atascado en una parte, hasta el momento, el codigo que tengo, genera una lista de puntos aleatoriamente, luego uando bucles calculo las distancias entre todos los puntos y guardo esos resultados en un diccionario donde las Keys seran un par de tuplas (par de puntos), y sus values corresponden a la distancia entre los 2 puntos mencionados. el paso que seguiria seria alamacenar los dos púntos que tienen una menor distacia entre si, ya sea en una lista o un dict, y asi formar mi primer cluster, luego realizar lo mismo con los puntos restantes, (ya tengo una idea de como quedaria el código para eso), lo que no se, es una vez tenga todos los cluster con los demas puntos, como calcularia la distancia entre los clusters generados?, es decir pudo calcular la distancia entre dos puntos, pero mis clusters ya no serian un punto, sino un cojunto de puntos. les muestro lo que llevo de codigo:
import math import random # genrar puntos aleatorios def generar_puntos(puntos): for _ in range(10): punto= (random.randint(0,10),random.randint(0,10)) puntos.append(punto) # calcular distancia entre los puntos def distancia_entre_puntos(a,b): distancia=round(math.sqrt((a[0]-b[0])**2+(a[1]-b[1])**2),2) return distancia def run(): # generando un grupo de puntos aleatoriamente puntos=[] generar_puntos(puntos) print(puntos) # un lista para guardar las distancias, y un dict. para guardar los pares de puntos y sus respectivas distancias entre si (memoization) distancias=[] puntos_distancias={} #cluster para guardar los cluster generados cluster=[] # calculo de las distancias de entre todos los puntos generados y guadarlas en el dict for i in puntos: for j in puntos[puntos.index(i)+1:]: #lo que hice en este bucle, fue evitar que se repitiera el calculos, distancia AB==distancia BA distancia=distancia_entre_puntos(i,j) distancias.append(distancia) puntos_distancias[i,j]=distancia if __name__ == "__main__": run();``` algo que se me ocurre, seria calcular las distancias entre los puntos de un clusterA con los puntos de un clusterB, luego teniendo todas esas distancias, calcular la media entre esas distancias y esa seria la distancia enres el clusterA y el clusterB, sin embargo no se si estaría cumpliendo el algoritmo o si es un procedimiento valido
- Conexión completa: La distancia se mide entre los dos puntos más lejanos de cada cluster.
- Conexión simple: Es la opuesta a la conexión completa. Toma la distancia mínima entre dos puntos de cada cluster. 3.Distancia entre medias: La distancia entre dos clústeres se calcula como la distancia entre las medias de cada uno.
- La distancia promedio entre pares: Es el promedio entre todas las distancias que podemos obtener entre todos los pares de puntos.
Kevin Alejandro Tovar Lamilla
Hola, Lo que debes hacer para medir distancias entre clusters es lo siguiente: primero debes elegir como medir las distancias (la forma que prefiero yo es usando la media aunque podrias medirla entre los puntos mas cercanos de dos cluster o los mas lejanos), con la media, por ejemplo, tienes que hallar la media de los cluster que tengas, y despues mides las distancias entre dos cluster tomando como punto la coordenada media. Aun no he hecho el reto pero cuando tenga el código (si es que funciona) lo adjuntare para que tengas una idea 😋
Kevin Alejandro Tovar Lamilla
hola, me puse a leer un poco y encontre que hay cuatro formas de medir distancias entre clusters:
Te dejo la fuente donde hablan mas sobre esto: https://estrategiastrading.com/clustering-jerarquico/
