Beispiel #1
0
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
Beispiel #2
0
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
Beispiel #3
0
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([])
Beispiel #4
0
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)
Beispiel #5
0
# 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)