My overall approach to coding, including data science and machine learning.

Programming languages

Mainly Python, although I’ve also played with and am curious about Julia.

Programming IDE

Visual Studio Code has been my favourite IDE for quite some time. What I like the most is its broad support for extensions and how it provides a seamlessly standardised experience for any type of files.

I have written in the past about my IDE setup here: VS Code for data science (this is somewhat outdated now though.

Data processing frameworks

I often work with Pandas DataFrames combined with Pandera (so that we have well defined schemas).

When objects aren’t suitable to be a DataFrame (e.g. LLM structured outputs), then I use Pydantic for its convenience and type validation.

When I have larger datasets, I have used the following tools in the past:

Machine learning

For deep learning models, PyTorch. For smaller and faster ML models, scikit-learn and XGBoost. For NLP, Hugging Face and spaCy.

TensorFlow can be a valid alternative to PyTorch. Jax can also be an option, as well as some Julia packages.

Comet is great for logging model training experiments and performing hyperparameter tuning. But both that and Weights&Biases can be expensive, so I often fallback to MLFlow.

SHAP is my go-to in terms of model interpretability (by the way, I adapted it to RNN-type models, as you can see in my article Interpreting recurrent neural networks on multivariate time series and in my Master's Thesis Presentation).

RaySGD (which is part of Ray) is a good tool to do efficient distributed training. PyTorch Lightning is a good alternative.