Ejemplo n.º 1
0
 def loadTestData(self):
     self.teste_sub_data_set = DataSet.loadSubDataSet(self.file_path +
                                                      "sub_data_set_" +
                                                      str((self.k + 1) -
                                                          self.iteration) +
                                                      ".csv")
     print(self.teste_sub_data_set)
Ejemplo n.º 2
0
    def loadTrainingData(self):
        for i in range(1, (self.k + 1)):
            if (((self.k + 1) - i) != self.iteration):
                new_sub_data_set = DataSet.loadSubDataSet(self.file_path +
                                                          "sub_data_set_" +
                                                          str(i) + ".csv")

                if (i == 1):
                    self.training_sub_data_set = new_sub_data_set
                else:
                    self.training_sub_data_set = DataSet.concatSubDataSet(
                        self.training_sub_data_set, new_sub_data_set)
                del (new_sub_data_set)
        print(self.training_sub_data_set)
Ejemplo n.º 3
0
    def run(self):
        self.number_false_positives = 0
        self.number_false_negatives = 0
        self.number_true_positives = 0
        self.number_true_negatives = 0
        self.total_samples = 0
        self.acc_samples = 0
        self.err_samples = 0

        print(self.result_path)
        result_dataframe = DataSet.loadResult(self.result_path, self.iteration)

        #obtem numero de classes diferentes existentes no atributos classe
        self.classes = Preprocessor.getClassesPerColumns(
            self.test_data_set, self.class_name)

        acc_classes = []
        err_classes = []

        #posicao do atributo "classe" no vetor
        posicao_classe = len(result_dataframe.values[0]) - 2

        for i in range(0, len(result_dataframe.values)):
            self.total_samples += 1
            #print("Real: " + str(self.test_data_set.values[i,posicao_classe]) + " -- predito: " + str(result_dataframe.values[i,posicao_classe]))
            if (self.test_data_set.values[i, posicao_classe] == '0'
                    or self.test_data_set.values[i, posicao_classe] == '0.0'
                    or self.test_data_set.values[i, posicao_classe] == 0):
                if (result_dataframe.values[i, posicao_classe] == 0
                        or result_dataframe.values[i, posicao_classe] == '0' or
                        result_dataframe.values[i, posicao_classe] == '0.0'):
                    #print("FALSO E CLASSIFICOU COMO FALSO")
                    self.number_true_negatives += 1
                    self.acc_samples += 1
                else:
                    #print("FALSO E CLASSIFICOU COMO VERDADEIRO")
                    self.number_false_positives += 1
                    self.err_samples += 1

            elif (self.test_data_set.values[i, posicao_classe] == '1'
                  or result_dataframe.values[i, posicao_classe] == '1.0'
                  or self.test_data_set.values[i, posicao_classe] == 1):
                if (result_dataframe.values[i, posicao_classe] == 1
                        or result_dataframe.values[i, posicao_classe] == '1' or
                        result_dataframe.values[i, posicao_classe] == '1.0'):
                    #print("VERDADEIRO E CLASSIFICOU COMO VERDADEIRO")
                    self.number_true_positives += 1
                    self.acc_samples += 1
                else:
                    #print("VERDADEIRO E CLASSIFICOU COMO FALSO")
                    self.number_false_negatives += 1
                    self.err_samples += 1

        #arquivos para salvar informacoes resumidas das k iteracoes do cross-validation (cada linha representa uma iteracao)
        arquivoMatriz = open(self.result_path + 'Matriz.txt', 'a+')
        #salva no formato: VP, FP, FN, VN
        textoMatriz = str(self.number_true_positives) + """,""" + str(
            self.number_false_positives) + """,""" + str(
                self.number_false_negatives) + """,""" + str(
                    self.number_true_negatives) + """
"""
        arquivoMatriz.write(textoMatriz)
        arquivoMatriz.close()

        arquivoTempo = open(self.result_path + 'tempo.txt', 'a+')
        # salva no formato: tempo execucao completo, tempo treino, tempo teste
        textoTempo = str(self.tempo_execucao) + """,""" + str(
            self.training_time) + """,""" + str(self.test_time) + """
"""
        arquivoTempo.write(textoTempo)
        arquivoTempo.close()

        arquivoInfos = open(self.result_path + 'infos.txt', 'a+')
        #salva no formato: total exemplos, total exemplos corretamento classficados, total exemplos erroneamente classificados, % exemplos corretamente classificados (acuracia), % exemplos erroneamente classificados (taxa de erro)
        textoInfos = str(self.total_samples) + """,""" + str(
            self.acc_samples) + """,""" + str(
                self.err_samples) + """,""" + str(
                    (100 / float(self.total_samples)) *
                    self.acc_samples) + """,""" + str(
                        (100 / float(self.total_samples)) *
                        self.err_samples) + """
"""
        arquivoInfos.write(textoInfos)
        arquivoInfos.close()

        #salva matriz de confusao no arquivo final_info de cada iteracao
        arquivo = open(
            self.result_path + 'final_info_' + str(self.iteration) + '.txt',
            'w')
        texto = """		MATRIZ DE CONFUSAO
             Predicao      
		 ATAQUE    NORMAL  
	   |--------||--------|
ATAQUE |   """ + str(self.number_true_positives) + """    ||   """ + str(
            self.number_false_negatives) + """    |
	   |--------||--------|
NORMAL |   """ + str(self.number_false_positives) + """    ||   """ + str(
                self.number_true_negatives) + """    |
	   |--------||--------|
		"""

        texto += """TOTAL DE EXEMPLOS: """ + str(
            self.total_samples) + """ 	|   
|--------||--------|
"""
        texto += """TOTAL DE EXEMPLOS CORRETOS: """ + str(
            self.acc_samples) + """ 	|   
|--------||--------|
"""
        texto += """TOTAL DE EXEMPLOS ERRADOS: """ + str(
            self.err_samples) + """ 	|   
|--------||--------|
"""
        texto += """PORCENTAGEM ACERTOS: """ + str(
            (100 / float(self.total_samples)) * self.acc_samples) + """ 	|   
|--------||--------|
"""
        texto += """PORCENTAGEM ERROS: """ + str(
            (100 / float(self.total_samples)) * self.err_samples) + """ 	|   
|--------||--------|
"""
        texto += """TEMPO DE EXECUCAO: """ + str(
            self.tempo_execucao) + """  ||| 
"""
        texto += """TEMPO DE TREINO: """ + str(self.training_time) + """  ||| 
"""
        texto += """TEMPO DE TESTE: """ + str(self.test_time) + """  ||| 
"""
        #recupera quantidade de exmemplos que foram submtidos ao KNN
        if (DataSet.checkPathBoolean(self.result_path +
                                     "../knn_classification/")):
            data_set_knn = DataSet.loadSubDataSet(
                self.result_path + "../knn_classification/cross_" +
                str(self.iteration) + "_final_result.csv")
            texto += """Exemplos submetidos a segunda classificacao: """ + str(
                len(data_set_knn))
            arquivoKNN = open(self.result_path + 'KNN.txt', 'a+')
            textoKNN = str(len(data_set_knn)) + """
"""
            arquivoKNN.write(textoKNN)
            arquivoKNN.close()
        arquivo.write(texto)
        arquivo.close()
 def loadTestData(self):
     self.testData = DataSet.loadSubDataSet(self.file_path + "fold_" +
                                            str(self.iteration) + ".csv")