Skip to content

Módulo para análise dos dados do Salic por meio de algoritmos de aprendizagem de máquina

License

Notifications You must be signed in to change notification settings

lappis-unb/salic-ml

Repository files navigation

Salic - Machine Learning

O salic-ml é um projeto aberto que utiliza inteligência artificial para otimizar e automatizar o ciclo de vida de projetos culturais viabilizados pela Lei Rouanet e acompanhados pelo sistema Salic.

O projeto se iniciou em março de 2018, em uma parceria entre o LAPPIS e o Ministério da Cultura (MinC). A primeira fase do projeto teve foco no levantamento do ciclo de vida de projetos culturais e em seus principais pontos de melhoria. Em julho de 2018 foi iniciada a Fase 2 do projeto e foram definidas as primeiras metas e entregas de curto e médio prazo. Detalhes de pesquisa e planejamento estão disponíveis da seção Wiki e discussões e principais ideias podem ser encontradas na seção Issues.

A parceria contou com a contribuição de diversos funcionários do MinC e do LAPPIS e entre os idealizadores e principais contribuidores, é possível citar: Carla Rocha e Fábio Mendes (coordenadores do LAPPIS) e Joênio Costa, Luciano Prestes, Victor Moura, Eduardo Nunes, Fabíola Malta, Rodrigo Oliveira, Pablo Diego, João Guilherme, Daniel Guerreiro, Felipe Duerno, Alexandre Torres, Lucas Mattioli, Marlon Mendes, Ricardo Poppi e Rodrigo Maia.

O projeto salic-ml é dividido em uma API REST para disponibilização de indicadores a respeito dos projetos submetidos para a lei rouanet e um pacote de algoritmos utilizados para o cálculo de métricas.

Contribuição

Para acompanhar nosso planejamento por sprint e a longo prazo, instale o plugin ZenHub para o GitHub e acesse a aba que fica ao lado da aba de Pull requests neste repositório.

Requisitos

Existem duas maneiras de executar este projeto, sendo uma com ambiente local e outra utilizando Docker.

Para um ambiente de desenvolvimento local, você irá precisar da versão 3.6, ou superior, do Python. Além disso, é recomendado que você possua instalado o virtualenv, um ótimo isolador de ambientes Python e junto com ele o virtualenvwrapper.

Instalação

Para ambientes locais, você pode seguir os seguintes passos:

  1. Criar ambiente isolado com virtualenv

    $ mkvirtualenv salicml -p /usr/bin/python3.6
  2. Instalar as dependências dentro do ambiente virtual

    $ python setup.py develop

Para ambientes docker, basta executar o docker-compose:

    $ sudo docker-compose -f docker/docker-compose.yml up

Como lidamos com os dados

Nosso algoritmos utilizam a biblioteca pandas, uma excelente biblioteca para lidar com dados em formato de tabela. Nosso flow de trabalho é:

  1. Gerar pandas dataframes a partir de um banco de dados.

  2. Gerar arquivos pickle comprimidos destes dataframes.

  3. Acessar estes arquivos pickle com nossa api de dados:

    from salicml.data import data
    
    data.planilha_orcamentaria

Todos os dataframes em forma de arquivos pickle, são armazenados neste repositório da pasta data/raw, e ficam disponíveis para acesso via Python pela nossa api de dados.

Reprodução de pesquisas

Após a instalação, execute o seguinte comando a partir da raiz do diretório:

$ jupyter-notebook

Este comando abrirá uma página o navegador. A partir deste navegador, entre no diretório research/notebooks e abra o notebook desejado. Estrutura de pastas para armazenar os notebooks de estudo e pesquisa:

  • Doing: notebooks que estão sendo desenvolvidos.

  • Exploratory: notebooks usados para exploração. Pode conter "rascunhos", notebooks não finalizados ou finalizados mas com pouca relevância. Seguem o formato <Descrição do Notebook>-<Versão>.

  • Report: Notebooks com os resultados das pesquisas. Esta pasta contém as versões de notebooks estáveis e atualizados das pesquisas realizadas.

Tasks comuns

Este projeto utiliza tasks do invoke para automatizar tarefas.

  • Subir o servidor de desenvolvimento da API:

    $ inv run
  • Popular o banco de dados local com os projetos do banco de dados remoto:

    $ inv update-models
  • Baixar os arquivos pickles:

    $ inv get-pickles
  • Gerar dataframes de teste

    $ inv gen-test-df
  • Setar quais datasets usar (desenvolvimento, produção ou teste)

    $ inv set-data datatype=prod
    $ inv set-data datatype=dev
    $ inv set-data datatype=test
  • Transformar arquivos csv em pickles:

    $ inv pickle
  • Treinar os algoritmos de cálculo de métricas:

    $ inv train-metrics
  • Gerar um arquivo pickle a partir de uma consulta de banco:

    $ inv run-sql
  • Criar migrações:

    $ inv make
  • Executar migrações:

    $ inv migrate
  • Alias para python manage.py:

    $ inv manager

Outros comandos

  • Para que tenha acesso a lista de comandos digite em seu terminal:

     $ invoke --list
    
  • Para ler a descrição de um comando específico (exemplo comando run):

     $ invoke --help run
    

Primeiros passos

Aqui são descritos os passos necessários para quem acabou de instalar o ambiente:

  1. Baixar os arquivos pickle
    $ inv get-pickles
  2. Popular o banco com projetos
     $ inv update-models
  3. Treinar as métricas
    $ inv train-metrics
  4. Subir o servidor
    $ inv run

Licença

O salic-ml é desenvolvido sob a Licença GPLv3.

About

Módulo para análise dos dados do Salic por meio de algoritmos de aprendizagem de máquina

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published