예제 #1
0
    def tentar_dividir(self, dados_do_cluster, silhueta_win):

        flarg = True
        cont = 0
        while (flarg):
            if (cont > 20):
                raise ValueError("cant converge")
            try:
                cont = cont + 1
                #print("trying",str(cont))
                kmeans_temp = ultra_omega_alpha_kmeans2.ultra_omega_alpha_kmeans(
                    inicializacao="++")
                kmeans_temp.incluir(dados_do_cluster[0])
                kmeans_temp.inicializar()
                kmeans_temp.executar()
                #kmeans_inter_grupo precisa ser um vetor de vetores, cujo vetor mais externo ficam os grupos e os vetores internos são os dados para esses grupos.

                um_cluster_com_dados = self.criarConjunto(
                    kmeans_temp.clusters, kmeans_temp.dados)

                silhueta_do_grupo = calcularSilhueta(kmeans_temp)
                flarg = False

            except:
                pass
        cluster_com_indice = [[dados_do_cluster[1][i] for i in cluster]
                              for cluster in kmeans_temp.clusters]
        #print("antigo",silhueta_win,"novo",silhueta_do_grupo)
        if (silhueta_win < silhueta_do_grupo):
            silhueta_win = silhueta_do_grupo
            meu_zip = zip(um_cluster_com_dados, cluster_com_indice)
            return (True, meu_zip)
        else:
            return (False, dados_do_cluster)
예제 #2
0
def kmeanza(som, come_xuchu, n):
    silhueta_acumulador = 0
    for _ in range(1):
        flaag = True
        while (flaag):
            try:
                kmeans = KMeans(n_clusters=n)
                som.cluster(kmeans)
                kmeanz = Kmeanz()
                kmeanz.clusters = clusterizacao(som)
                kmeanz.dados = come_xuchu
                silhueta_final = silhuetaDInamico.calcularSilhueta(kmeanz)
                silhueta_acumulador = silhueta_acumulador + silhueta_final
                flaag = False
            except:
                pass

    return silhueta_acumulador
예제 #3
0
    def tentar_dividir(self,dados_do_cluster, silhueta_win):      
        

        kmeans_temp = ultra_omega_alpha_kmeans2.ultra_omega_alpha_kmeans()
        kmeans_temp.incluir(dados_do_cluster[0])
        kmeans_temp.inicializar()
        kmeans_temp.executar()
        #kmeans_inter_grupo precisa ser um vetor de vetores, cujo vetor mais externo ficam os grupos e os vetores internos são os dados para esses grupos.
          

        um_cluster_com_dados = self.criarConjunto(kmeans_temp.clusters,kmeans_temp.dados)
        

        silhueta_do_grupo = calcularSilhueta(kmeans_temp)

        cluster_com_indice = [[dados_do_cluster[1][i] for i in cluster] for cluster in kmeans_temp.clusters]
        print("antigo",silhueta_win,"novo",silhueta_do_grupo)
        if(silhueta_win < silhueta_do_grupo):
            silhueta_win = silhueta_do_grupo
            meu_zip = zip(um_cluster_com_dados, cluster_com_indice)
            return (True,meu_zip)
        else:
            return (False,dados_do_cluster)
예제 #4
0
                            flagg = True
                            while (flagg):
                                try:
                                    kmeans = ultra_omega_alpha_kmeans.ultra_omega_alpha_kmeans(
                                        no_clusters=numero_de_cluster,
                                        distancia=distancia,
                                        algoritmo=algoritmo)

                                    kmeans.incluir(come_xuchu)
                                    kmeans.inicializar()

                                    kmeans.executar_x_means(7)
                                    #print(len(kmeans.clusters[0]),len(kmeans.clusters[1]))
                                    #print(kmeans.no_clusters)

                                    silhueta_final = silhuetaDInamico.calcularSilhueta(
                                        kmeans)

                                    silhueta_acumulador = silhueta_acumulador + silhueta_final
                                    flagg = False
                                except:
                                    print("Error found, but remedied")
                        silhueta_acumulador = silhueta_acumulador / 30

                        resposta.append((silhueta_acumulador, come_xuchu_dict))

    pickle.dump(
        resposta,
        open(
            escolha_da_representacao + str(numero_de_cluster) +
            "x_reuters.jojo", "wb"))