def tratar_dados(data_treino, data_teste, teste): tratamentoDados(data_treino.copy(), "OHE") tratamentoDados(data_treino.copy(), "tfidf") # Carregar os dados tratados data_treino = pickles.carregarPickle("data") label_treino = pickles.carregarPickle("label") tfidf_treino = pickles.carregarPickle("tfidf") # Retirando naturezas com numero de empenhos menor que X depois da limpesa label_treino, index_label_x_empenhos = tratar_label.label_elemento( label_treino["natureza_despesa_cod"], 2) label_treino = pd.DataFrame(label_treino)["natureza_despesa_cod"] data_treino.drop(index_label_x_empenhos, inplace=True, axis=0) data_treino.reset_index(drop=True, inplace=True) tfidf_treino.drop(index_label_x_empenhos, inplace=True, axis=0) tfidf_treino.reset_index(drop=True, inplace=True) del index_label_x_empenhos # Tamanhos dos dados de treino tratados print("OHE_treino", data_treino.shape) print("TF-IDF_treino", tfidf_treino.shape) visao_dupla_treino = csr_matrix( sparse.hstack((csr_matrix(data_treino), csr_matrix(tfidf_treino)))) print("Visao dupla, dados combinados do treino", visao_dupla_treino.shape) if (teste): # Aplicar o tratamento no teste tfidf_teste, label_teste = tratarDados(data_teste.copy(), 'tfidf') data_teste, label_teste = tratarDados(data_teste.copy(), 'OHE') # Retirando naturezas com numero de empenhos menor que X depois da limpesa label_teste, index_label_x_empenhos = tratar_label.label_elemento( label_teste["natureza_despesa_cod"], 2) label_teste = pd.DataFrame(label_teste)["natureza_despesa_cod"] data_teste.drop(index_label_x_empenhos, inplace=True, axis=0) data_teste.reset_index(drop=True, inplace=True) tfidf_teste.drop(index_label_x_empenhos, inplace=True, axis=0) tfidf_teste.reset_index(drop=True, inplace=True) # Tamanhos dos dados de treino tratados print("OHE_teste", data_teste.shape) print("TF-IDF_teste", tfidf_teste.shape) visao_dupla_teste = csr_matrix( sparse.hstack((csr_matrix(data_teste), csr_matrix(tfidf_teste)))) print("Visao dupla, dados combinados do testes", visao_dupla_teste.shape) return data_treino, label_treino, data_teste, label_teste, tfidf_treino, tfidf_teste, visao_dupla_treino, visao_dupla_teste else: return data_treino, label_treino, tfidf_treino, visao_dupla_treino
def load_dados(pouca_natureza, porcentagem_split): # Importando os dados do tribunal data = pd.read_csv("dadosTCE.csv", low_memory = False)[:500] data.drop("Empenho (Sequencial Empenho)(EOF).1", axis = 1, inplace = True) label = data["Natureza Despesa (Cod)(EOF)"] # Retirando naturezas com numero de empenhos menor ou igual a x label, index_label_x_empenhos = tratar_label.label_elemento(label, pouca_natureza) data.drop(index_label_x_empenhos,inplace = True, axis = 0) data.reset_index(drop = True, inplace = True) # Separando X% dos dados para selecao de hiperparametros data_treino, data_teste, label_treino, label_teste = train_test_split(data, label, test_size = porcentagem_split,stratify = label, random_state = 10) del data, label, label_teste, label_treino # Resetando os indexes dos dados data_treino.reset_index(drop = True, inplace = True) data_teste.reset_index(drop = True, inplace = True) return data_treino, data_teste
from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import StratifiedKFold from sklearn.model_selection import train_test_split #sys.argv = ["stacking.py","treino"] data = pd.read_csv("dadosTCE.csv",low_memory = False)[:500] data.drop("Empenho (Sequencial Empenho)(EOF).1", axis = 1, inplace = True) colunas = data.columns data.columns = [c.lower().replace(' ', '_') for c in data.columns] data.columns = [tratar_texto.removerCaracteresEspeciais(c)for c in data.columns] data.columns = [tratar_texto.tratarnomecolunas(c)for c in data.columns] data = filtro(data.copy()) data.columns = colunas label = data["Natureza Despesa (Cod)(EOF)"] # Retirando naturezas com numero de empenhos menor ou igual a x label, index_label_x_empenhos = tratar_label.label_elemento(label, 6) data.drop(index_label_x_empenhos,inplace = True, axis = 0) data.reset_index(drop = True, inplace = True) del index_label_x_empenhos if(sys.argv[1]=="treino"): # Separando 40% dos dados para selecao de hiperparametros data, data_teste, label, label_teste = train_test_split(data, label, test_size = 0.6,stratify = label, random_state = 10) del data_teste, label_teste # Resetando os indexes dos dados data.reset_index(drop = True, inplace = True) label.reset_index(drop = True, inplace = True) print(data.shape) #iniciando vetores resultadoOHE = pd.DataFrame([])
from tratarDados import tratarDados from scipy.sparse import csr_matrix from tratamentos import tratar_label from preparacaoDados import tratamentoDados from sklearn.model_selection import cross_validate from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split data = pd.read_csv("arquivos/dadosTCE.csv", low_memory=False) label = data["Natureza Despesa (Cod)(EOF)"] data['Período (Dia/Mes/Ano)(EOF)'] = [ xlrd.xldate_as_datetime(data['Período (Dia/Mes/Ano)(EOF)'].iloc[i], 0).date().isoformat() for i in range(data.shape[0]) ] # Retirando naturezas com numero de empenhos menor ou igual a x label, index_label_x_empenhos = tratar_label.label_elemento(label, 9) data.drop(index_label_x_empenhos, inplace=True, axis=0) data.reset_index(drop=True, inplace=True) # Separando treino e teste data, data_teste, label, label_teste = train_test_split(data, label, test_size=0.3, stratify=label, random_state=10) print("Tamanho dos dados de treino", data.shape) print("Tamanho dos dados de teste", data_teste.shape) # Tratando os documentos de treino e salvando os modelos para serem aplicados no teste data.reset_index(drop=True, inplace=True) data_teste.reset_index(drop=True, inplace=True) label.reset_index(drop=True, inplace=True) label_teste.reset_index(drop=True, inplace=True)
# Aquisicao dos dados dados = pd.read_csv("dadosTCE.csv", low_memory=False)[:500] dados.drop("Empenho (Sequencial Empenho)(EOF).1", axis=1, inplace=True) # Limpeza colunas = dados.columns dados.columns = [c.lower().replace(' ', '_') for c in dados.columns] dados.columns = [ tratar_texto.removerCaracteresEspeciais(c) for c in dados.columns ] dados.columns = [tratar_texto.tratarnomecolunas(c) for c in dados.columns] dados = filtro(dados.copy()) dados.columns = colunas # Retirando naturezas com numero de empenhos menor ou igual a 3 para fazer a divisao de treino ,teste e validacao label = pd.DataFrame(dados["Natureza Despesa (Cod)(EOF)"]) label, index_label_x_empenhos = tratar_label.label_elemento( label['Natureza Despesa (Cod)(EOF)'], 3) dados.drop(index_label_x_empenhos, inplace=True, axis=0) dados.reset_index(drop=True, inplace=True) del index_label_x_empenhos # Separacao dos dados em treino, teste e validacao dados, dados_test, label, label_test = train_test_split(dados, label, test_size=0.3, stratify=label, random_state=10) del label, label_test # Resetando os indexes dados.reset_index(drop=True, inplace=True) dados_test.reset_index(drop=True, inplace=True) print("Treino: ", dados.shape) print("Test: ", dados_test.shape)