1. Estruturas de Organização de Pastas¶
- Cookiecutter Data Science
- Template popular para estruturar projetos de ciência de dados de forma organizada e reprodutível.
- Cookiecutter Data Science
-
Project Template for Data Science
-
Estrutura projeto: Khuyen Tran:
- 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:
- pip install cookiecutter:
- Instala o
Cookiecutter
em si, que é uma ferramenta de linha de comando. - Permite criar projetos a partir de modelos pré-definidos (chamados "cookiecutters").
-
Útil para iniciar projetos em várias linguagens e áreas.
-
pip install cookiecutter-data-science:
- Instala o pacote específico para ciência de dados chamado
Cookiecutter Data Science
. - É um pacote específico para ciência de dados.
- Fornece um modelo consistente para projetos de ciência de dados.
- 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¶
-
Crie uma pasta para o template: Por exemplo, cookiecutter-template.
-
Dentro da pasta do template, crie um arquivo
cookiecutter.json
com as variáveis desejadas. -
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}}/
. -
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
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.
- 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"
}
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:
-
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
-
Nome do Projeto: Defina o nome do seu projeto:
project_name (project_name):
-
Nome do Repositório: Escolha um nome para o repositório do projeto:
repo_name (meu_primeiro_bagulho):
-
Nome do Módulo: Defina o nome do módulo Python principal do projeto:
module_name (meu_primeiro_bagulho):
-
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)):
-
Descrição do Projeto: Forneça uma breve descrição do projeto:
description (A short description of the project.):
-
Versão do Python: Especifique a versão do Python que será utilizada no projeto (padrão é 3.10):
python_version_number (3.10):
-
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
-
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
-
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
-
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
-
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):
-
Documentação: Escolha se deseja incluir documentação:
Select docs 1 - mkdocs 2 - none Choose from [1/2] (1):
-
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.