def Association(idTabela, filtro, qtd_regras): tabela = imp.ObterTabela(idTabela) sql = dbTab.GerarSQL(idTabela, 'S') if tabela.sql_sem_hist != None and tabela.sql_sem_hist != '': if filtro == 'H': sql = sql + ' WHERE NOT (' + tabela.sql_sem_hist + ')' elif filtro == 'A': sql = sql + ' WHERE (' + tabela.sql_sem_hist + ')' lista = db.consultarSQL(sql) regras = desc.Association(lista, int(qtd_regras)) dp_regras = json.dumps(regras) session = db.getSession() tabDesc = session.query(db.TabelaDescricao).filter_by( id_tabela=idTabela).filter_by(id_alg=id_alg_rule_association).first() if tabDesc == None: tabDesc = db.TabelaDescricao(None, idTabela, id_alg_rule_association, dp_regras, datetime.now()) session.add(tabDesc) else: tabDesc.modelo = dp_regras tabDesc.dt_processo = datetime.now() session.commit() session.close() return tabDesc
def profAlunos(): seg.ChecarPerfil(seg.PERFIL_Professor) colunaIdAluno = meta.ObterColunaIdAluno() nomeColunaClasse, idColunaClasse = meta.ObterColunaClasse( colunaIdAluno.id_tabela) sql = dbTab.GerarSQL(colunaIdAluno.id_tabela, 'O', [colunaIdAluno.id, idColunaClasse]) df = dm.db.consultarSQLDataFrame(sql) lista = [] for index, row in df.iterrows(): login_aluno = row[colunaIdAluno.nome] usuario = usu.ObterUsuarioPorLogin(login_aluno) lista.append(usuario) campos = ({ 'campo': 'login', 'titulo': 'matricula' }, { 'campo': 'nome', 'titulo': 'Nome' }) grd = comp.grid('Lista de Alunos', lista, campos) return dict(grid=grd)
def ObterAlunosParaRecomendacoes(id_aluno): listaMensanges = [] nomeAluno = '' tx_acerto = 0 nomeColuna, id_colunaClasse = meta.ObterColunaClasse() colunaClasse = meta.ObterColuna(id_colunaClasse) tabela = imp.ObterTabela(colunaClasse.id_tabela) colunaIdAluno = meta.ObterColunaIdAluno(colunaClasse.id_tabela) listaAlunos = [] listaColunas = [] listaColunas.append(colunaIdAluno.id) listaColunas.append(colunaClasse.id) sql = dbTab.GerarSQL(tabela.id, 'O', listaColunas) dfAlunos = db.consultarSQLDataFrame(sql) session = db.getSession() for index, row in dfAlunos.iterrows(): usuario = session.query( db.Usuario).filter_by(login=row[colunaIdAluno.nome]).first() usuario.selecionado = False if id_aluno == usuario.id: nomeAluno = usuario.nome usuario.selecionado = True listaAlunos.append(usuario) session.close() algPredicao = ObterTabelaPredicao(tabela.id) for alg in algPredicao.Alg: if alg.selecionado: tx_acerto = alg.tx_acerto if id_aluno != 0: listaMensanges = ObterRecomendacoesPorAluno(id_aluno) return dict(listaAlunos=listaAlunos, listaMensanges=listaMensanges, id_aluno=id_aluno, nomeAluno=nomeAluno, tx_acerto=tx_acerto)
def Cluster(idTabela, filtro, qtd_clusters): tabela = imp.ObterTabela(idTabela) sql = dbTab.GerarSQL(idTabela, 'S') if tabela.sql_sem_hist != None and tabela.sql_sem_hist != '': if filtro == 'H': sql = sql + ' WHERE NOT (' + tabela.sql_sem_hist + ')' elif filtro == 'A': sql = sql + ' WHERE (' + tabela.sql_sem_hist + ')' lista = db.consultarSQLDataFrame(sql) modeloDados, listaCopy = ut.PrepararLista(lista) kmeans = desc.Cluster(listaCopy, int(qtd_clusters)) clusters = kmeans.cluster_centers_ labels = kmeans.labels_ display = list() for x in range(0, int(qtd_clusters)): display.append('Cluster_' + str(x)) objModelo = { 'n_clusters': qtd_clusters, 'modeloDados': modeloDados, 'clusters': clusters.tolist(), 'labels': labels.tolist(), 'display': display } md_clusters = json.dumps(objModelo) session = db.getSession() tabDesc = session.query(db.TabelaDescricao).filter_by( id_tabela=idTabela).filter_by(id_alg=id_alg_clusters).first() if tabDesc == None: tabDesc = db.TabelaDescricao(None, idTabela, id_alg_clusters, md_clusters, datetime.now()) session.add(tabDesc) else: tabDesc.modelo = md_clusters tabDesc.dt_processo = datetime.now() session.commit() session.close() return None
def CalcularPreditivo(idTabela, id_coluna, tam_tst): sql = dbTab.GerarSQL(idTabela, 'S') lista = db.consultarSQLDataFrame(sql) del lista['rowid'] colunaClasse = meta.ObterColuna(id_coluna) modeloDados, listaCopy = ut.PrepararLista(lista) listaModeloPred = None jsModeloDados = json.dumps(modeloDados, default=iDefault) if colunaClasse.tipo == 'N': listaCopy[colunaClasse.nome] = ut.TransformarNumeros( lista[colunaClasse.nome].values()) listaModeloPred = pred.ModeloReg(listaCopy, colunaClasse.nome, tam_tst) else: listaModeloPred, clfTree = pred.ModeloClf(listaCopy, colunaClasse.nome, tam_tst) lstPesos = pred.ObterPesos(lista, clfTree, colunaClasse.nome, colunaClasse.val_aluno_risco) strPesos = json.dumps(lstPesos) maiorTxAcerto = 0 id_alg_sel = 0 for modelo in listaModeloPred: txAcerto = modelo['TxAcerto'] if maiorTxAcerto < txAcerto: id_alg_sel = modelo['id_alg'] maiorTxAcerto = txAcerto tabPred = db.TabelaPredicao(0, idTabela, jsModeloDados, None, tam_tst, strPesos, id_alg_sel) tabPred = SalvarTabelaPredicao(tabPred) SalvarTabelaPredicaoAlg(tabPred.id, listaModeloPred, lstPesos) #modelo2, listaCopy2 = ut.PrepararListaComModelo(modeloDados, lista) ExportarDados(idTabela) return listaModeloPred
def Outlier(idTabela, filtro, campoD, campoV): tabela = imp.ObterTabela(idTabela) sql = dbTab.GerarSQL(idTabela, 'S') if tabela.sql_sem_hist != None and tabela.sql_sem_hist != '': if filtro == 'H': sql = sql + ' WHERE NOT (' + tabela.sql_sem_hist + ')' elif filtro == 'A': sql = sql + ' WHERE (' + tabela.sql_sem_hist + ')' lista = db.consultarSQLDataFrame(sql) campoVal = meta.ObterColuna(campoV).nome campoDesc = meta.ObterColuna(campoD).nome existeOutlier, listaDf = desc.Outliers(lista, campoVal, campoDesc) modelo = { 'campoV': campoVal, 'campoD': campoDesc, 'existe': existeOutlier, 'lista': listaDf } md_outlier = json.dumps(modelo) session = db.getSession() tabDesc = session.query(db.TabelaDescricao).filter_by( id_tabela=idTabela).filter_by(id_alg=id_alg_outliers).first() if tabDesc == None: tabDesc = db.TabelaDescricao(None, idTabela, id_alg_outliers, md_outlier, datetime.now()) session.add(tabDesc) else: tabDesc.modelo = md_outlier tabDesc.dt_processo = datetime.now() session.commit() session.close() return "OK"
def ExportarDados(id_tabela): tabela = imp.ObterTabela(id_tabela) #-- Rede Gazeta #path = "C:/Users/bstoll/source/repos/LA-Intervencao/LA-Intervencao/arquivosUpld" #-- pythonanywhere path = "/home/bstoll/mysite/arquivosUpld" #-- Casa #path = "C:/Users/Bruno Stoll/source/repos/LA-Intervencao/LA-Intervencao" pathFile = "{path}/{file}".format(path=path, file=tabela.nome + ".csv") listaColunas = meta.ListarColunas(id_tabela) ar_lst_cols = [] for col in listaColunas: ar_lst_cols.append(col.id) sql = dbTab.GerarSQL(id_tabela, 'O', ar_lst_cols) df = dbTab.db.consultarSQLDataFrame(sql) if os.path.isfile(pathFile): os.remove(pathFile) df.to_csv(pathFile, index=False)
def GerarDfVisaoPln(id_tabela, colunasDimensoes, colunasMedidas, filtro=''): # montar itens da visão listaColunas = [] listaTodasColunas = [] listaColunasExibGrd = [] defColunasAgrp = { } campoCateg = None filtroClasse = 'O' for coluna in colunasDimensoes: listaColunas.append(coluna.id) nomeCampo = coluna.nome if campoCateg == '': campoCateg = coluna.nome else: campoSerie = coluna.nome defColunasAgrp[coluna.id] = '' listaTodasColunas.append(nomeCampo) listaColunasExibGrd.append( {'campo': coluna.nome, 'titulo': coluna.titulo } ) for coluna in colunasMedidas: listaColunas.append(coluna.id) nomeCampo = coluna.nome if coluna.tipo == 'N': defColunasAgrp[coluna.id] = 'Sum' listaTodasColunas.append(nomeCampo) listaColunasExibGrd.append( {'campo': coluna.nome, 'titulo': coluna.titulo } ) sql = dbTab.GerarSQL(id_tabela, filtroClasse, listaColunas, True, defColunasAgrp, filtro) df = db.consultarSQLDataFrame(sql) for col in df.columns: if col == 'final_result': df[col][df[col] == 'LA :: Prev :: Falha'] = 'Falha' df[col][df[col] == 'LA :: Prev :: Sucesso'] = 'Sucesso' return df
def GerarSQLTop10(idTabela): return dbTab.GerarSQL(idTabela) + ' LIMIT 10'
def ObterDadosPrevisao(idTabela): sql = dbTab.GerarSQL(idTabela, 'O') return db.consultarSQLDataFrame(sql)