def __init__(self, vectores): self.vect = vectores self.clust = ut.generarLista(len(vectores)) i = 0 "Generamos la lista de clusters" while i < len(vectores): self.clust[i] = [i] i += 1 print(len(vectores)) "El diccionario donde se guardaran las distancias y el estado de los clusters" self.dist = {} self.dist[0] = copy(self.clust) "Se inicializa la lista donde se guardara el estado de cada iteracion" self.iter = ut.generarLista(len(vectores)) self.iter[0] = copy(self.clust)
def inicializarCentroides(self): centroides = ut.generarLista(len(self.clust)) i = 0 while i < len(self.clust): centroide = ut.calcularCentro(self.clust[i], self.vect) centroides[i] = centroide i += 1 return centroides
def clustersIteracion(path, instancias, numclus): iteraciones = ut.cargar(os.getcwd() + path) clusters = iteraciones[len(instancias) - numclus] centroides = ut.generarLista(len(clusters)) i = 0 while i < len(clusters): centroide = ut.calcularCentro(clusters[i], instancias) centroides[i] = centroide i += 1 return centroides
def __init__(self, vectores): self.vect = vectores self.clust = {} i = 0 while i < len(vectores): self.clust[i + 1] = [i] i += 1 self.dist = {} self.dist[0] = copy(self.clust) self.iter = ut.generarLista(len(vectores)) self.iter[0] = copy(self.clust)
def clusterDist(path, instancias, dist): distancias = ut.cargar(path) nivel = 0 for each in distancias.keys(): if each <= dist and each > nivel: nivel = each clusters = distancias[nivel] lista = ut.generarLista(len(instancias)) asig = ut.listaClusters(instancias, clusters, lista) i = 0 while i < len(instancias): guardarAsig(instancias[i], asig[i]) i += 1
def evaluar(self, path, instancias): res = ut.cargar(path) labels = ut.generarLista(len(instancias)) i = 0 parar = False scoreMax = 0 hasta = len(res.keys()) * 0.9 for each in res.keys(): if i != 0 and i % 10 == 0 and i <= hasta and not parar: agrup = res[each] labels = ut.listaClusters(instancias, agrup, labels) score = self.daviesBouldin(instancias, labels) self.guardarScore(len(agrup.keys()), score) if score > scoreMax: scoreMax = score elif score < scoreMax: parar = True print(score) i += 1
def evaluar(self, res, instancias): labels = ut.generarLista(len(instancias)) i = 0 scoreMax = 99999999999 agrupF = 0 salto = math.ceil(len(res.keys()) * 0.01) for each in res.keys(): "if i!=0 and i%10==0 and i <= hasta and not parar:" if i != 0 and i % salto == 0 and i < len(res.keys()) - 1: agrup = res[each] labels = ut.listaClusters(instancias, agrup, labels) score = self.daviesBouldin(instancias, labels) self.guardarScore(len(agrup), score) if score < scoreMax: scoreMax = score agrupF = len(agrup) i += 1 string = ' La mejor agrupacion es con {} '.format(agrupF) string += 'clusters con un score de {}'.format(round(scoreMax, 4)) print(string)
def __init__(self, num, m): lista = ut.generarLista(num) self.dist = [copy(lista) for i in range(num)] self.coeficiente = m