Predicting the Understandability of Computational Notebooks through Code Metrics Analysis
<|reference_start|>Predicting the Understandability of Computational Notebooks through Code Metrics Analysis: Computational notebooks have become the primary coding environment for data scientists. However, research on their code quality is still emerging, and the code shared is often of poor quality. Given the importance of maintenance and reusability, understanding the metrics that affect notebook code comprehensibility is crucial. Code understandability, a qualitative variable, is closely tied to user opinions. Traditional approaches to measuring it either use limited questionnaires to review a few code pieces or rely on metadata such as likes and votes in software repositories. Our approach enhances the measurement of Jupyter notebook understandability by leveraging user comments related to code understandability. As a case study, we used 542,051 Kaggle Jupyter notebooks from our previous research, named DistilKaggle. We employed a fine-tuned DistilBERT transformer to identify user comments associated with code understandability. We established a criterion called User Opinion Code Understandability (UOCU), which considers the number of relevant comments, upvotes on those comments, total notebook views, and total notebook upvotes. UOCU proved to be more effective than previous methods. Furthermore, we trained machine learning models to predict notebook code understandability based solely on their metrics. We collected 34 metrics for 132,723 final notebooks as features in our dataset, using UOCU as the label. Our predictive model, using the Random Forest classifier, achieved 89% accuracy in predicting the understandability levels of computational notebooks.<|reference_end|>
@article{ghahfarokhi2024predicting,
    title={Predicting the Understandability of Computational Notebooks through Code
  Metrics Analysis},
    author={Mojtaba Mostafavi Ghahfarokhi, Alireza Asadi, Arash Asgari, Bardia
  Mohammadi, Masih Beigi Rizi, Abbas Heydarnoori},
    journal={arXiv preprint arXiv:2406.10989},
    year={2024},
    archivePrefix={arXiv},
    eprint={2406.10989},
    primaryClass={cs.SE cs.AI}
}