Thomas J. Fan is a Member of Technical Staff at Modal and a maintainer of scikit-learn, where Fan is listed in the project's active Maintainers Team. Fan's blog includes a retrospective on six years as a scikit-learn maintainer, along with technical posts on PyTorch model serialization with torch.export, portable torch.compile caches, NumPy ufuncs with Cython, and Python extensions in Rust.123
At a glance
- Current role
- Member of Technical Staff
- Company
- Modal
- Sector
- Company
- Work listed
- 1
- Sources cited
- 6
- Profile reviewed
Open-source work
Fan joined the scikit-learn team as a maintainer more than six years before a May 2025 retrospective post, and the project's About page lists Fan among its active maintainers; scikit-learn is released under the BSD 3-Clause License. In that retrospective Fan highlighted contributions such as native categorical and missing-value support in tree models, cost complexity pruning, pandas and Polars DataFrame output through the set_output API, and feature name propagation with get_feature_names_out.425
Other features Fan worked on include the TargetEncoder for categorical data, grouping of infrequent categories in scikit-learn's encoders, KNN-based missing value imputation, an HTML representation for visualizing estimators in Jupyter notebooks, a plotting API for inspecting estimators, and experimental GPU support through the Array API standard so that scikit-learn can run on PyTorch or CuPy arrays.4
Teaching and writing
Fan speaks regularly at Python data science conferences. Talks listed on Fan's site include a deep dive into scikit-learn's histogram-based gradient boosting at PyData NYC 2019, talks on skorch, which combines scikit-learn and PyTorch, and on Poisson regression at SciPy, and talks on parallelism in numerical Python libraries, scikit-learn on GPUs with the Array API, and pushing Cython to its limits in scikit-learn.6
Fan's blog covers performance and tooling topics, including PyTorch graph capture and data-dependent control flow, portable torch.compile caches, serializing models with torch.export, NumPy ufuncs written with Cython 3.0 and Python extensions in Rust. A July 2026 post set out five principles for using large language models in software engineering. Fan is currently a Member of Technical Staff at Modal.31
Work and contributions
scikit-learn Open-source code
Listed in the active Maintainers Team on the scikit-learn About page; Fan's GitHub profile describes the role as scikit-learn maintainer.215
Timeline
- Presented a deep dive into scikit-learn's HistGradientBoosting estimators at PyData NYC 2019.6
- Presented skorch, a union of scikit-learn and PyTorch, at SciPy 2019.6
- Spoke on parallelism in numerical Python libraries at PyData NYC 2022.6
- Presented scikit-learn on GPUs with the Array API at PyData NYC 2023.6
- Presented "Pushing Cython to its Limits in Scikit-learn" at PyData NYC 2024.6
- Published a retrospective on six years as a scikit-learn maintainer.4
- Published "Five Principles for Using LLMs for Software Engineering".3
Where they work
- Modal 3 people in the wiki
Related people
- Erik BernhardssonAlso at Modal
- Akshat BubnaAlso at Modal
- Nikita ShulgaML frameworks and libraries · Developer tools
- Matthew WatsonML frameworks and libraries · Developer tools
- Bratin SahaML frameworks and libraries · Developer tools
- Tim DavisML frameworks and libraries · Developer tools
- Jake VanderPlasML frameworks and libraries · Developer tools
- Chip HuyenDeveloper tools · ML frameworks and libraries
- William FalconML frameworks and libraries · Developer tools
- Piero MolinoML frameworks and libraries · Developer tools
Suggest a correction or removal
Profiles cover public professional work only, and each statement cites a source. If something is out of date, missing or wrong, tell us and link a source. People can also ask for their profile to be corrected or removed.
References
6 sources · profile reviewed Oct 21, 2026 · data updated Oct 21, 2026