Estou procurando informações sobre como deve ser organizado um projeto de aprendizado de máquina do Python. Para projetos usuais do Python, existe o Cookiecutter e para o R ProjectTemplate .
Esta é a minha estrutura de pastas atual, mas estou misturando Jupyter Notebooks com o código Python real e isso não parece muito claro.
.
├── cache
├── data
├── my_module
├── logs
├── notebooks
├── scripts
├── snippets
└── tools
Eu trabalho na pasta scripts e atualmente adiciono todas as funções nos arquivos em my_module, mas isso leva a erros ao carregar dados (caminhos relativos / absolutos) e outros problemas.
Não consegui encontrar boas práticas adequadas ou bons exemplos sobre esse tópico, além de algumas soluções de competição kaggle e alguns Notebooks com todas as funções condensadas no início desse Notebook.
Respostas:
Acho que ainda não há boas práticas nessa área em desenvolvimento, mas, além do cookiecutter, algumas idéias interessantes foram mostradas em um tutorial na conferência SciPy 2016: http://isaacslavitt.com/2016/07/20/ data-science-is-software-talk /
Pessoalmente, tento minimizar o número de subpastas em um projeto, a menos que tenha uma maneira realmente boa de distingui-las e tenha boas razões para mantê-las separadas. Má organização é quase tão ruim quanto nenhuma organização. Eu acho que as melhores práticas podem depender do caso de uso - nem todo projeto precisa da mesma quantidade de clichê.
fonte
A Universidade de Washington lançou um modelo de projeto para pequenos projetos científicos de python (incluindo projetos de ciência de dados) chamado
shablona
. É isso mais ou menos o que você está procurando?https://github.com/uwescience/shablona
fonte