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)
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
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)
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"))