Exemplo n.º 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
Exemplo n.º 2
0
from sklearn.model_selection import train_test_split
from tratarDados import refinamento_hiperparametros

data = pd.read_excel("dados_analisados.xlsx")
print(data.shape)
label = data["ANÁLISE"]
data.drop("ANÁLISE", axis=1, inplace=True)
data_treino, data_teste, label_treino, label_teste = train_test_split(
    data, label, test_size=0.1, stratify=label, random_state=10)
data_treino.reset_index(drop=True, inplace=True)
data_teste.reset_index(drop=True, inplace=True)
label_treino.reset_index(drop=True, inplace=True)
label_teste.reset_index(drop=True, inplace=True)
del data, label
# Tratando os dados de treino
tratamentoDados(data_treino.copy(), 'tfidf')
tratamentoDados(data_treino.copy(), 'Modelo 2')
data_treino = pickles.carregarPickle("data")
label_treino = pickles.carregarPickle("label")
tfidf_treino = pickles.carregarPickle("tfidf")
data_treino = sparse.hstack(
    (csr_matrix(data_treino), csr_matrix(tfidf_treino)))
del tfidf_treino
print("Treino: ", data_treino.shape)
# Aplicando o tratamento nos dados de teste
data_teste, label_teste = tratarDados(data_teste, "Modelo 2")
print("Teste: ", data_teste.shape)
# Modelo
valor_c = 1.3
modelo = SVC(kernel="linear", random_state=0, C=valor_c)
modelo.fit(data_treino, label_treino.values.ravel())
Exemplo n.º 3
0
from sklearn.model_selection import train_test_split
from preparacaoDados import tratamentoDados
from scipy.sparse import csr_matrix
from modelos import cenknn
from scipy import sparse
import pandas as pd

data, label = tratamentoDados("OHE")
tfidf = tratamentoDados("tfidf")
aux = sparse.hstack((csr_matrix(data), csr_matrix(tfidf)))
dados = pd.DataFrame.sparse.from_spmatrix(aux)
X_train, X_test, y_train, y_test = train_test_split(dados,
                                                    label,
                                                    test_size=0.3,
                                                    stratify=label,
                                                    random_state=5)
#for i in range(1,6,1):
#    cenknn.cenknn(X_train, X_test, y_train, y_test,"com Cenknn", k_value = i) # numero de vizinhos
#import time
#start = time.time()
print(X_train.shape, " X_train")
print(X_test.shape, " X_test")
cenknn.cenknn(X_train, X_test, y_train, y_test, "com Cenknn",
              k_value=2)  # numero de vizinhos
#final = time.time()
#print(final-start)
Exemplo n.º 4
0
    bins = []
    width = higher_bound / 100
    for low in np.arange(lower_bound, higher_bound, width):
        bins.append((low, low + width))
    return bins


# Retorna em qual intervalo o valor esta
def find_bin(value, bins):
    for i in range(0, len(bins)):
        if bins[i][0] <= value < bins[i][1]:
            return i
    return -1


texto = tratamentoDados("texto")
dados, label = tratamentoDados("sem OHE")
# Trata os valores numericos colocando-os em intervalos e os valores categoricos limpando o texto
for col in dados.columns:
    # Caso seja numerico entre
    if (dados[col].dtype == "float" or dados[col].dtype != "O"):
        # Se tiver apenas 1 valor
        if (dados[col].value_counts().count() == 1):
            dados[col] = "coluna_" + col + "_intervalo_0 "
            continue
        # Separa o range dos valores em 100 intervalos iguais
        bins = create_bins(lower_bound=dados[col].min(),
                           higher_bound=dados[col].max() + 0.000001)
        column = [0] * dados.shape[0]
        # Verifica em qual intervalo o doc esta e coloca uma classe para ele
        for i in range(dados.shape[0]):
Exemplo n.º 5
0

#iniciando vetores
resultadoOHE = pd.DataFrame([])
resultadoTFIDF = pd.DataFrame([])
rotulo = pd.DataFrame([])
kf = StratifiedKFold(n_splits = 3, shuffle = True, random_state = 10)
for train_index, test_index in kf.split(data, label):
# =============================================================================
#         Primeira parte
# =============================================================================
    data_train, data_test = data.iloc[train_index], data.iloc[test_index]
    data_train.reset_index(drop = True, inplace = True)
    data_test.reset_index(drop = True, inplace = True)
    # Tratando os dados de treino
    tratamentoDados(data_train.copy(),'tfidf')
    tratamentoDados(data_train.copy(),'OHE')
    # Carregando os dados tratados
    X_train = csr_matrix(pickles.carregarPickle("data"))
    X_train_text = csr_matrix(pickles.carregarPickle("tfidf"))
    y_train = pickles.carregarPickle("label")
    # Aplicando o tratamento nos dados de teste
    X_test, y_test = tratarDados(data_test.copy(),'OHE')
    X_test = csr_matrix(X_test)
    X_test_text, y_test = tratarDados(data_test.copy(),'tfidf')
    X_test_text = csr_matrix(X_test_text)
    y_test.reset_index(drop = True, inplace = True)
    # Algoritmo 1
    y_prob_predito = pd.DataFrame(randomforest.randomForest(X_train, X_test, y_train, y_test,"prob",1020))
    y_prob_predito.index = test_index
    resultadoOHE = pd.concat([resultadoOHE,y_prob_predito],axis=0)
Exemplo n.º 6
0
from preparacaoDados import tratamentoDados
from matplotlib import pyplot as plt
import numpy as np
import pandas as pd
from tratamentos import tratar_texto
from wordcloud import WordCloud

data, label = tratamentoDados("OHE")
textoTratado = tratamentoDados("texto")
data.reset_index(drop=True, inplace=True)

for natureza in data['natureza_despesa_nome'].value_counts().index[43:]:
    wordcloud = data['natureza_despesa_nome'].where(
        data['natureza_despesa_nome'] == natureza)
    wordcloud.dropna(inplace=True)
    naturezas = pd.DataFrame(textoTratado).iloc[wordcloud.index]

    wc_string = naturezas[0].str.cat(sep=' ')
    wc = WordCloud(width=1600,
                   height=800,
                   background_color="white",
                   max_words=2000).generate(wc_string)
    plt.ioff()
    fig = plt.figure(figsize=(16, 10))
    plt.imshow(wc, interpolation="bilinear")
    plt.axis("off")
    plt.tight_layout(pad=0)
    plt.title('Natureza de despesa:' + natureza, fontsize=18)
    plt.savefig("wordclouds/" + tratar_texto.remove_punctuation(natureza) +
                ".png",
                dpi=300)
Exemplo n.º 7
0
from preparacaoDados import tratamentoDados
import pandas as pd
import mlpack

data, label = tratamentoDados("sem OHE")  #  Carrega os dados
dados = pd.read_csv("dados_stacking.csv",
                    encoding="utf-8")  # Carrega os dados do Stacking

# Calculando EMST
result = mlpack.emst(dados)
emst = pd.DataFrame(*result.values())
emst.to_csv('emst.csv', index=False, header=False)

# Retira o ponto do codigo do rotulo
label['natureza_despesa_cod'] = [
    label['natureza_despesa_cod'].iloc[i].replace(".", "")
    for i in range(data.shape[0])
]
# Convertendo os dados para o formato correto
data = dados.astype("str")
for i in range(data.shape[0]):
    for j in range(data.shape[1]):
        data.iloc[i].iloc[j] = "FEAT" + str(j + 1) + ":" + str(
            data.iloc[i].iloc[j])
data.reset_index(drop=True, inplace=True)
dados_preparados = pd.concat([label, data], axis=1)

# Salva os dados
dados_preparados.to_csv('dados_preparados.csv',
                        index=False,
                        header=False,
Exemplo n.º 8
0
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)
tratamentoDados(data.copy(), "tfidf")
tratamentoDados(data.copy(), "OHE")
# Carregar os dados tratados
data = pickles.carregarPickle("data")
label = pickles.carregarPickle("label")
label.reset_index(drop=True, inplace=True)
tfidf = pickles.carregarPickle("tfidf")
data = sparse.hstack((csr_matrix(data), csr_matrix(tfidf)))
#data =  pd.DataFrame.sparse.from_spmatrix(data)
# Tratando os dados de teste
data_teste, label_teste = tratarDados(data_teste, "visao dupla")
# =============================================================================
# RF
# =============================================================================
modelo = RandomForestClassifier(n_jobs=-1,
                                random_state=10,
Exemplo n.º 9
0
from sklearn.svm import SVC
from tratamentos import pickles
from scipy.sparse import csr_matrix
from tratarDados import tratarDados
from sklearn.metrics import f1_score
from preparacaoDados import tratamentoDados
from sklearn.ensemble import RandomForestClassifier

#def modelo_validacao(dados_tce):
# Carregando os dados validados
dados_tce = pickles.carregarPickle("dados_tce_limpos")[:1000] # 265246
dados_juliete = pd.read_excel("dados_analisados.xlsx")
dados_juliete.insert (25, "Empenho (Sequencial Empenho)(EOF).1", dados_juliete["Empenho (Sequencial Empenho)(EOF)"])

# Definindo a label como a avaliacao da validacao ( correto, incorreto, inconclusivo )
label_juliete = pd.DataFrame(tratamentoDados(dados_juliete.copy(),"dropar"))
dados_juliete.drop("ANÁLISE",axis = 1, inplace = True)
#
tratamentoDados(dados_juliete.copy(),"tfidf")
tratamentoDados(dados_juliete.copy(),"OHE")
dados_juliete = pickles.carregarPickle("data")
tfidf_juliete = pickles.carregarPickle("tfidf")
dados_juliete = sparse.hstack((csr_matrix(dados_juliete),csr_matrix(tfidf_juliete) ))
del tfidf_juliete
print(dados_juliete.shape)
# tratando os dados de teste
dados_teste, label_teste = tratarDados(dados_tce)
# =============================================================================
# MODELOS
# =============================================================================
identificador_empenho = pickles.carregarPickle("modelos_tratamentos/identificador_empenho")
Exemplo n.º 10
0
from sklearn.metrics import silhouette_score
from sklearn.decomposition import IncrementalPCA
from sklearn.model_selection import train_test_split

# Meus packages
from modelos import single_value_decomposition
from preparacaoDados import tratamentoDados
from modelos import feature_importance
from modelos import gaussian_mixtures
from modelos import analise_cluster
from modelos import rocchio
from modelos import kmeans
from modelos import dbscan

# Retorna os dados tratados
data, label = tratamentoDados("OHE")
data = pd.DataFrame(data.values)
# =============================================================================
# Achar melhor eps
# =============================================================================
#min_sample = 2
#from sklearn.neighbors import NearestNeighbors
#nbrs = NearestNeighbors(n_neighbors=min_sample).fit(data)
#distances, indices = nbrs.kneighbors(data)
#distanceDec = sorted(distances[:,min_sample-1], reverse=True)
#plt.figure(figsize=(20,15))
#plt.plot(indices[:,0], distanceDec)
#plt.grid()
#plt.xticks(range(0,len(indices[:,0]),50))
##plt.yticks(np.arange(0,max(distanceDec),0.1))
#plt.show()
Exemplo n.º 11
0
 dados_tce = dados_tce_originais.copy()
 # pega os empenhos pelo identificador
 indexes_novos_dados = [0]*len(documentos_mais_90_certeza)
 for j in range(len(documentos_mais_90_certeza)):
     indexes_novos_dados[j] = dados_tce[dados_tce["Empenho (Sequencial Empenho)(EOF)"] == documentos_mais_90_certeza[j] ].index[0]
 documentos_mais_90_certeza = dados_tce.iloc[indexes_novos_dados]
 # adiciona os novos empenhos ao conjunto de dados principal
 dados_juliete_originais = pd.concat([dados_juliete, documentos_mais_90_certeza], axis = 0)
 dados_juliete_originais.reset_index(drop = True, inplace = True)
 dados_juliete = dados_juliete_originais.copy()
 # retirando os documentos ja selecionados do teste
 dados_tce_originais.drop(indexes_novos_dados,axis = 0, inplace = True)
 dados_tce_originais.reset_index(drop = True, inplace = True)
 dados_tce = dados_tce_originais.copy()
 #
 tratamentoDados(dados_juliete.copy(),"tfidf")
 tratamentoDados(dados_juliete.copy(),"OHE")
 dados_juliete = pickles.carregarPickle("data")
 label_juliete = pickles.carregarPickle("label")
 tfidf_juliete = pickles.carregarPickle("tfidf")
 dados_juliete = sparse.hstack((csr_matrix(dados_juliete),csr_matrix(tfidf_juliete) ))
 del tfidf_juliete
 print(dados_juliete.shape)
 # retirando as classes que nao estao no treino
 naturezas_tce = pd.DataFrame(dados_tce['Natureza Despesa (Cod)(EOF)'])
 naturezas_juliete = list(label_juliete['natureza_despesa_cod'].value_counts().index)
 fora_do_modelo = []
 for i in range(len(naturezas_tce)):
     if(naturezas_tce.iloc[i][0] not in naturezas_juliete):
         fora_do_modelo.append(i)
 dados_tce.drop(fora_do_modelo,inplace = True)
Exemplo n.º 12
0
from gensim.scripts.glove2word2vec import glove2word2vec
from sklearn.model_selection import train_test_split
from preparacaoDados import tratamentoDados
from gensim.models import KeyedVectors
from scipy.sparse import csr_matrix
from modelos import randomforest
from scipy import sparse
import pandas as pd
import numpy as np
import re
# retorna o texto tratado e limpo
texto_tratado = tratamentoDados("texto")
data,label = tratamentoDados("OHE")
tfidf = tratamentoDados("tfidf")
# tokeniza os textos
sentences_ted = []
for sent_str in texto_tratado:
    tokens = re.sub(r"[^a-z0-9]+", " ", sent_str.lower()).split()
    sentences_ted.append(tokens)
del tokens,sent_str

embeddings_dict = {}
with open("glove.6B/glove_s100.txt", 'r') as f:
    for line in f:
        values = line.split()
        word = values[0]
        vector = np.asarray(values[1:], "float32")
        embeddings_dict[word] = vector

del word,values,vector
#glove_file = pd.read_table('glove.6B/glove_s100.txt', sep=" ",index_col = 0)
Exemplo n.º 13
0
from scipy.sparse import csr_matrix
from tratarDados import tratarDados
from sklearn.metrics import f1_score
from preparacaoDados import tratamentoDados
from sklearn.ensemble import RandomForestClassifier

dados_tce = pickles.carregarPickle("dados_tce_limpos")[:1000]  # 265246
dados_juliete = pd.read_excel("dados_analisados.xlsx")
dados_juliete.insert(25, "Empenho (Sequencial Empenho)(EOF).1",
                     dados_juliete["Empenho (Sequencial Empenho)(EOF)"])

#deixando apenas os dados corretos e incorretos
dados_juliete = dados_juliete[dados_juliete["ANÁLISE"] != "INCONCLUSIVO"]
dados_juliete.reset_index(drop=True, inplace=True)
#dados_juliete['Natureza Despesa (Cod)(EOF)'].value_counts() #379 naturezas
tratamentoDados(dados_tce.copy(), "tfidf")
tratamentoDados(dados_tce.copy(), "OHE")
dados_tce = pickles.carregarPickle("data")
label = pickles.carregarPickle("label")
tfidf = pickles.carregarPickle("tfidf")
dados_tce = sparse.hstack((csr_matrix(dados_tce), csr_matrix(tfidf)))
del tfidf
print(dados_tce.shape)
# retirando as classes que nao estao no treino
naturezas_juliete = pd.DataFrame(dados_juliete['Natureza Despesa (Cod)(EOF)'])
natureza_tce = list(label['natureza_despesa_cod'].value_counts().index)
fora_do_modelo = []
# remove naturezas que nao estao presentes nos dados de treino
for i in range(len(naturezas_juliete)):
    if (naturezas_juliete.iloc[i][0] not in natureza_tce):
        fora_do_modelo.append(i)