Pular para conteúdo

1. Estruturas de Organização de Pastas

  1. Cookiecutter Data Science
  2. Template popular para estruturar projetos de ciência de dados de forma organizada e reprodutível.
  3. Cookiecutter Data Science
  4. cookiecutter docs

  5. Project Template for Data Science

  6. Modelo de projeto de ciência de dados

  7. Estrutura projeto: Khuyen Tran:

  8. Estrutura de projeto: Khuyen Tran

2. Diferenças Cookiecutter e Cookiecutter Data Science

A diferença entre pip install cookiecutter e pip install cookiecutter-data-science está nos modelos (ou “cookiecutters”) que eles fornecem:

Em resumo, temos dois pacotes relacionados ao Cookiecutter:

  1. pip install cookiecutter:
  2. Instala o Cookiecutter em si, que é uma ferramenta de linha de comando.
  3. Permite criar projetos a partir de modelos pré-definidos (chamados "cookiecutters").
  4. Útil para iniciar projetos em várias linguagens e áreas.

  5. pip install cookiecutter-data-science:

  6. Instala o pacote específico para ciência de dados chamado Cookiecutter Data Science.
  7. É um pacote específico para ciência de dados.
  8. Fornece um modelo consistente para projetos de ciência de dados.
  9. Inclui estrutura de diretórios para dados, notebooks, modelos e visualizações.

Ambos são úteis, dependendo do tipo de projeto que você deseja iniciar! 🚀

3. Cookiecutter Data Science

3.0.1. O que é Cookiecutter Data Science?

Cookiecutter Data Science é um projeto e uma ferramenta que visa facilitar a criação e a organização de projetos de ciência de dados de maneira estruturada, padronizada e reprodutível.

3.0.2. Como Usar o Cookiecutter Data Science?

  • Instalação: Para usar o Cookiecutter Data Science, você precisa primeiro instalar o Cookiecutter via pip:
pip install cookiecutter-data-science
  • Execução: Para criar um novo projeto de ciência de dados usando Cookiecutter Data Science (PADRÃO), execute o seguinte comando no terminal:
ccds
  • Personalização: Durante a criação do projeto, você será solicitado a fornecer informações como nome do projeto, nome do autor, diretório de trabalho, entre outros. Isso personaliza o template de acordo com as suas necessidades específicas.

3.0.3. Benefícios do Cookiecutter Data Science

  • Estrutura Padrão: Oferece uma estrutura de diretórios padronizada que inclui pastas para dados brutos, dados processados, notebooks de exploração, scripts de modelagem, entre outros.

  • Reprodutibilidade: Facilita a reprodutibilidade do projeto ao definir uma organização clara dos dados, scripts e notebooks, garantindo que outros membros da equipe ou colaboradores possam entender e reproduzir os resultados facilmente.

  • Boas Práticas: Promove boas práticas de desenvolvimento de software e ciência de dados, como separação de dados e código, versionamento de modelos, e documentação integrada.

3.1. Configurando o Cookiecutter Data Science

Para configurar o Cookiecutter Data Science (ccds) padrão olhe o passo a passo: - Cookiecutter data science - ccds padrão.md

4. Cookiecutter

O Cookiecutter em si é uma ferramenta de linha de comando que permite criar projetos a partir de modelos (ou “templates”) pré-definidos. No entanto, existem vários pacotes de modelos específicos para diferentes tipos de projetos. Além do Cookiecutter Data Science, você pode encontrar outros pacotes de modelos para áreas como desenvolvimento web, aprendizado de máquina, análise de dados e muito mais.

4.1. Selecionando Templates Específicos:

Você pode explorar os templates disponíveis em cookiecutter.io/templates.

Para data science: * cookiecutter-data-science * data-science-template-khuyen * data-science-template-espedito

---

5. Estrutura de Diretórios para Projetos de Ciência de Dados/Machine Learning

A Ferramenta Cookiecutter data science, oference uma estrutura muito boa, porém considere criar seu proprio sistema de pastas segue um exemplo de template.

project_name/
│
├── data/
│   ├── raw/               # Dados brutos, originais e não processados   ├── processed/         # Dados processados e prontos para uso   ├── external/          # Dados de fontes externas   └── interim/           # Dados intermediários durante o processamento
│
├── notebooks/
│   ├── exploration/       # Notebooks de exploração inicial dos dados
|   |-- preprocessing
│   ├── modeling/          # Notebooks de experimentação e modelagem   └── reporting/         # Notebooks usados para gerar relatórios
│
├── src/
│   ├── data/              # Scripts para carregar, limpar e processar dados   ├── features/          # Scripts para gerar e selecionar features   ├── models/            # Scripts para treinar e avaliar modelos   ├── visualization/     # Scripts para criar visualizações dos dados e resultados   └── utils/             # Scripts utilitários e funções auxiliares
│
├── models/
│   ├── saved/             # Modelos treinados salvos   ├── checkpoints/       # Checkpoints de treinamento de modelos   └── logs/              # Logs de treinamento e validação de modelos
│
├── output/
│   ├── figures/           # Gráficos e visualizações geradas   ├── reports/           # Relatórios gerados, como PDF, HTML, etc.   └── predictions/       # Previsões geradas pelos modelos
│
├── tests/                 # Scripts de testes para o código
│
├── requirements.txt       # Lista de dependências de pacotes
├── environment.yml        # Configuração de ambiente Conda (alternativa ao requirements.txt)
├── setup.py               # Script de configuração do projeto
├── README.md              # Documentação inicial do projeto
└── .gitignore             # Arquivos e diretórios a serem ignorados pelo Git

5.1. Descrição dos Diretórios

  • data/: Armazena todos os dados do projeto.

  • notebooks/: Contém notebooks Jupyter organizados por propósito.

  • src/: Scripts e códigos fonte organizados por funcionalidade.

  • models/: Diretório para salvar modelos treinados e logs de treinamento.

  • output/: Diretório para armazenar saídas do projeto.

6. Criando Sua Própria Estrutura de Projetos com Cookiecutter

6.1. Passo 1: Instalação do Cookiecutter

Antes de tudo, você precisa ter o Cookiecutter instalado. Se ainda não tiver, você pode instalá-lo usando o pip (gerenciador de pacotes do Python):

pip install cookiecutter

6.2. Passo 2: Estrutura Básica do Projeto

Comece decidindo a estrutura básica que você deseja para seus projetos. Por exemplo, vamos criar um template básico para um projeto de ciência de dados:

cookiecutter-template/
├── cookiecutter.json
└── {{cookiecutter.project_slug}}/
    ├── data/
    ├── models/
    ├── notebooks/
    ├── src/
    │   ├── __init__.py
    │   └── main.py
    ├── tests/
    │   ├── __init__.py
    │   └── test_main.py
    ├── README.md
    └── requirements.txt
  • cookiecutter.json: Este arquivo contém as variáveis que serão substituídas durante a criação do projeto. Por exemplo, project_slug pode ser substituído pelo nome do projeto.

  • {{cookiecutter.project_slug}}/: Diretório principal do projeto onde os arquivos e diretórios são gerados.

6.3. Passo 3: Configurando o cookiecutter.json

No arquivo cookiecutter.json, você define as variáveis que serão usadas no template. Aqui está um exemplo simples:

{
    "project_name": "Meu Projeto",
    "project_slug": "{{ cookiecutter.project_name.lower().replace(' ', '_') }}",
    "author_name": "Seu Nome",
    "email": "seuemail@example.com",
    "description": "Descrição do seu projeto"
}
  • project_name: Nome do projeto.
  • project_slug: Nome do projeto em minúsculas e substituição de espaços por _.
  • author_name: Seu nome.
  • email: Seu email.
  • description:Descrição do projeto.

6.4. Passo 4: Criando o Template

  1. Crie uma pasta para o template: Por exemplo, cookiecutter-template.

  2. Dentro da pasta do template, crie um arquivo cookiecutter.json com as variáveis desejadas.

  3. Estruture os diretórios e arquivos: Dentro da pasta do template, crie a estrutura de diretórios e arquivos que deseja que seu projeto tenha. Utilize variáveis onde necessário, como {{cookiecutter.project_slug}}/.

  4. Inclua scripts e arquivos de configuração: Adicione qualquer script de inicialização ou configuração que seja necessário para seu projeto.

6.5. Passo 5: Use o Cookiecutter para gerar o projeto

Execute o comando abaixo, substituindo path/to/cookiecutter-template pelo caminho para o template criado:

cookiecutter path/to/cookiecutter-template
Se o template estiver disponível em um repositório GitHub, você pode usar o comando com a URL:

cookiecutter https://github.com/exemplo/cookiecutter-data-science

6.6. Passo Extra: Configuração pyproject.toml

Ao usar o Cookiecutter para gerar a estrutura do projeto, você pode configurar o pyproject.toml para incluir as variáveis preenchidas automaticamente.

  1. Defina as variáveis no cookiecutter.json:

{
    "project_name": "ml-deploy",
    "project_slug": "{{ cookiecutter.project_name.lower().replace(' ', '_') }}",
    "author_name": "Seu Nome",
    "email": "seuemail@example.com",
    "description": "Deploy em Produção de um Modelo de Machine Learning com Flask e Heroku"
}
2.Configure o pyproject.toml para usar as variáveis:

[tool.poetry]
name = "{{ cookiecutter.project_slug }}"
version = "0.1.0"
description = "{{ cookiecutter.description }}"
authors = ["{{ cookiecutter.author_name }} <{{ cookiecutter.email }}>"]

[tool.poetry.dependencies]
python = "^3.8"
# Adicione aqui outras dependências do seu projeto

[tool.poetry.dev-dependencies]
pytest = "^6.2"

Pronto.

7. Configuração do Projeto com Cookiecutter Data Science (ccds)

Durante a configuração do seu projeto usando o Cookiecutter Data Science (CCDS), você pode seguir os passos abaixo:

  1. Re-download do Template: Se você já baixou o template do Cookiecutter Data Science anteriormente, ele perguntará se deseja deletar e baixar novamente:

    You've downloaded C:\Users\esped.cookiecutters\cookiecutter-data-science before. Is it okay to delete and re-download it?
    [y/n] (y): y
    

  2. Nome do Projeto: Defina o nome do seu projeto:

    project_name (project_name): 
    

  3. Nome do Repositório: Escolha um nome para o repositório do projeto:

    repo_name (meu_primeiro_bagulho):
    

  4. Nome do Módulo: Defina o nome do módulo Python principal do projeto:

    module_name (meu_primeiro_bagulho):
    

  5. Nome do Autor: Informe o seu nome ou o nome da sua organização, empresa ou equipe:

    author_name (Your name (or your organization/company/team)):
    

  6. Descrição do Projeto: Forneça uma breve descrição do projeto:

description (A short description of the project.):
  1. Versão do Python: Especifique a versão do Python que será utilizada no projeto (padrão é 3.10):

    python_version_number (3.10):
    

  2. Armazenamento de Datasets: Escolha onde os conjuntos de dados serão armazenados:

Select dataset_storage
1 - none
2 - azure
3 - s3
4 - gcs
Choose from [1/2/3/4] (1): 1
  1. Gerenciador de Ambiente: Selecione o gerenciador de ambiente que você pretende utilizar:

    Select environment_manager
        1 - virtualenv
        2 - conda
        3 - pipenv
        4 - none
    Choose from [1/2/3/4] (1): 4
    

  2. Arquivo de Dependências: Escolha o tipo de arquivo de dependências que será utilizado:

    Select dependency_file
        1 - requirements.txt
        2 - environment.yml
        3 - Pipfile
        Choose from [1/2/3] (1): 3
    

  3. Pacotes PyData: Decida se deseja incluir pacotes PyData padrão no projeto:

    Select pydata_packages
        1 - none
        2 - basic
        Choose from [1/2] (1): 1
    

  4. Licença de Código Aberto: Escolha a licença de código aberto para o seu projeto:

    Select open_source_license
        1 - No license file
        2 - MIT
        3 - BSD-3-Clause
        Choose from [1/2/3] (1):
    

  5. Documentação: Escolha se deseja incluir documentação:

    Select docs
        1 - mkdocs
        2 - none
        Choose from [1/2] (1):
    

  6. Incluir Estrutura de Código: Decida se deseja incluir uma estrutura inicial de código:

    Select include_code_scaffold
        1 - Yes
        2 - No
        Choose from [1/2] (1):
    

Essas configurações ajudarão a personalizar seu projeto com base nas suas necessidades específicas de desenvolvimento e colaboração. Certifique-se de revisar e ajustar cada opção conforme necessário para garantir que o projeto seja configurado de acordo com suas preferências e requisitos. Este texto abrange todos os passos do processo de configuração inicial usando o Cookiecutter Data Science, explicando cada opção disponível para criar um projeto de ciência de dados personalizado de acordo com suas especificações.