Analysing Python Machine Learning Notebooks with Moose

Marius Mignard, Steven Costiou, Nicolas Anquetil, Anne Etien
9/15/2025
cs.SEcs.LG

No confident code implementation found for this paper. 3 possible matches can be shown below.

Abstract

Machine Learning (ML) code, particularly within notebooks, often exhibits lower quality compared to traditional software. Bad practices arise at three distinct levels: general Python coding conventions, the organizational structure of the notebook itself, and ML-specific aspects such as reproducibility and correct API usage. However, existing analysis tools typically focus on only one of these levels and struggle to capture ML-specific semantics, limiting their ability to detect issues. This paper introduces Vespucci Linter, a static analysis tool with multi-level capabilities, built on Moose and designed to address this challenge. Leveraging a metamodeling approach that unifies the notebook's structural elements with Python code entities, our linter enables a more contextualized analysis to identify issues across all three levels. We implemented 22 linting rules derived from the literature and applied our tool to a corpus of 5,000 notebooks from the Kaggle platform. The results reveal violations at all levels, validating the relevance of our multi-level approach and demonstrating Vespucci Linter's potential to improve the quality and reliability of ML development in notebook environments.

View on arXivView PDF

Code Implementations

No confident code match yet

We couldn't find an author-owned or strongly-evidenced community implementation for this paper. 3 weaker matches are hidden by default — verify before relying on them.

No code implementations found yet.

Know of an implementation? Let us know in the comments below!

Similar Papers

Cite this paper

@article{mignard2025analysing,
  title  = {Analysing Python Machine Learning Notebooks with Moose},
  author = {Marius Mignard and Steven Costiou and Nicolas Anquetil and Anne Etien},
  year   = {2025},
  eprint = {2509.11748},
  archivePrefix = {arXiv},
  url    = {http://arxiv.org/abs/2509.11748v1}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/2509.11748.svg)](https://codeofpaper.com/paper/2509.11748)

Discussion