示例#1
0
    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)
示例#2
0
 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
示例#3
0
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
示例#4
0
    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)
示例#5
0
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
示例#6
0
    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
示例#7
0
    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)
示例#8
0
 def __init__(self, num, m):
     lista = ut.generarLista(num)
     self.dist = [copy(lista) for i in range(num)]
     self.coeficiente = m