示例#1
0
    def test_gerar_k_folds(self):
        k = 7
        num_repeticoes = 3

        #print("DADOS: "+str(len(TestFold.df_dados)))
        tam_fold = len(Dados.df_dados)//k
        folds = Fold.gerar_k_folds(Dados.df_dados,col_classe="realClass",val_k=k,num_repeticoes=num_repeticoes,seed=1)

        #verifica se foram 4 folds e 3 repetições
        self.assertEqual(k*num_repeticoes,len(folds),"O número de folds criado não é quantidade solicitada")

        #verifica se os dados estao embaralhados
        arr_lista_fold0 = list(folds[0].df_data_to_predict.index.values)
        self.assertTrue(arr_lista_fold0!=[0,1,2], "A lista não foi embaralhada!")
        self.assertListEqual(arr_lista_fold0,[14, 13, 17], "A lista não foi embaralhada corretamente! Não esqueça de usar a seed=seed+num_repeticoes")
        #verifica se os dados foram divididos corretamente

        #testa cada repetição separadamente
        for repeticao_i in range(num_repeticoes):
            folds_por_repeticao = folds[repeticao_i*k:repeticao_i*k+k]
            TestFold.folds_test(self,Dados.df_dados,folds_por_repeticao,k,True,repeticao_i)

            for i,f in enumerate(folds_por_repeticao):
                ids_teste = set(f.df_data_to_predict.index.values.tolist())
                ids_treino = set(f.df_treino.index.values.tolist())

                #verifica se o temanho do teste esta correto do dataset
                if(i<k-1):
                    self.assertEqual(tam_fold,len(ids_teste),"O tamanho do partição deveria ser floor(numero_de_itens/val_k) - exceto o ultimo que deve possuir mais.")
                else:
                    self.assertTrue(len(ids_teste)>=tam_fold, "No ultimo fold, o tamanho da particao deve ser maior ou igual a floor(numero_de_itens/val_k)")
示例#2
0
    def get_experimento(self,ml_method=DecisionTreeClassifier(min_samples_split=1,random_state=1),ClasseObjetivoOtimizacao=OtimizacaoObjetivoArvoreDecisao):


        folds = Fold.gerar_k_folds(Dados.df_dados,val_k=5,col_classe="realClass",
                                    num_repeticoes=1,seed=1,
                                    num_folds_validacao=3,num_repeticoes_validacao=2)

        exp = Experimento(folds,ml_method, ClasseObjetivoOtimizacao, num_trials=10,
                            sampler=optuna.samplers.TPESampler(seed=1, n_startup_trials=3))
        return exp