scikit-learn/scikit-learn
scikit-learn: machine learning in Python
How scikit-learn is put together
scikit-learn is a Python machine learning library providing estimators for classification, regression, clustering, decomposition, and preprocessing, built on NumPy and SciPy. The codebase is primarily Python with performance-critical kernels implemented in Cython (and C) compiled via a Meson/meson-python build system. Data flows through estimator objects implementing fit/transform/predict APIs defined in sklearn/base.py and composed via sklearn/pipeline.py, with global runtime behavior controlled by thread-local configuration in sklearn/_config.py. The repository also contains extensive CI/build tooling (GitHub Actions, CircleCI docs builds, cibuildwheel), documentation infrastructure, and maintenance scripts.
Languages
Frameworks
Infrastructure
Major components
sklearn.cluster
Clustering algorithms including K-Means (with Cython Lloyd/Elkan/minibatch kernels), DBSCAN, affinity propagation, spectral, hierarchical, and OPTICS.
sklearn.decomposition
Matrix decomposition methods such as PCA, NMF, FastICA, dictionary learning, LDA, and kernel PCA.
sklearn.datasets
Loading and fetching sample datasets (including remote downloads from OpenML and other hosts) plus synthetic data generators and SVMLight format I/O.
sklearn.callback
Callback framework for monitoring estimator fitting, including progress bars, scoring monitors, and callback transport/context plumbing.
sklearn._loss
Loss functions and link functions for gradient boosting and linear models, with a Cython core generated from a tempita template (_loss.pyx.tp).
sklearn.compose
ColumnTransformer for per-column preprocessing pipelines and transformed-target regressors.
sklearn.covariance
Covariance estimation including empirical, shrunk, robust (MCD), graphical lasso, and elliptic envelope estimators.
Global configuration & base API (sklearn/_config.py, sklearn/base.py, sklearn/pipeline.py)
Thread-local global config (set_config/config_context), BaseEstimator machinery, and Pipeline composition of estimators.
A quieter week centered on improving how decision trees handle categorical data and expanding support for alternative array libraries.
5 weeksWeek of 2026-08-24
Week of 2026-08-24latest
A quieter week centered on improving how decision trees handle categorical data and expanding support for alternative array libraries.
Week of 2026-08-17
A busy week of bug fixes for mixed-device array inputs, plus Intel joining as a financial partner and several new code-quality linters.
Week of 2026-08-10
Infrastructure took center stage this week: a new type checker replaced mypy, plus a fix for parallel neighbor searches.
Week of 2026-08-03
Performance wins dominated: faster random forest training and quicker KNeighborsClassifier fitting, alongside the arrival of a new Newton-CD solver.
Week of 2026-07-27
The busiest week of the month, headlined by GridSearchCV learning to keep all outputs consistent with input transformations and major coordinate-descent improvements.
Over the past month, scikit-learn development focused on making the library work smoothly with modern array libraries (like GPU-backed arrays), speeding up core algorithms like random forests and nearest neighbors, and fixing a steady stream of bugs. Behind the scenes, the team invested heavily in developer tooling — replacing the type checker, adding new linting tools, and automating dependency updates. A new solver for linear models (Newton-CD) also landed as part of an ongoing performance initiative.
Week by week
2026-08-24A quieter week centered on improving how decision trees handle categorical data and expanding support for alternative array libraries.latest6 changes
Feature
ExtraTree supports far more categories
The ExtraTrees classifier can now handle up to 16 million possible categories using a deterministic hashing trick for random splitting.
Fix
Progress bars stop on time
Timer-based progress bars in meta-estimators now correctly stop once the task finishes instead of continuing to run.
Chore
CI scripts updated for GitHub API
Automation scripts were updated to use the current GitHub authentication method, avoiding deprecation warnings.
Feature
Array API support for contingency_matrix
The confusion-matrix helper now works with alternative array libraries like PyTorch or CuPy, not just NumPy.
Docs
Test helper documentation improved
A parameter description was added to an internal test utility's documentation.
Chore
Dependency lock files refreshed
Automated bots updated pinned dependencies for the array-API and scipy-dev test environments.
2026-08-17A busy week of bug fixes for mixed-device array inputs, plus Intel joining as a financial partner and several new code-quality linters.6 changes
Docs
Intel added as financial partner
Intel was added to the list of organizations financially supporting scikit-learn development.
Fix
LDA works across devices
LinearDiscriminantAnalysis now handles inputs that mix different array libraries or compute devices (e.g., CPU and GPU).
Fix
PCA validation fix
PCA now properly checks when its inputs come from different array namespaces before computing results.
Feature
Array API support for OAS covariance
The OAS covariance estimator can now run on alternative array libraries beyond NumPy.
Chore
New linting tools added
Codespell (spelling checker) and sphinx-lint (documentation checker) were integrated into the project's automated checks.
Chore
Windows build fix
An OpenBLAS math-library version was rolled back on Windows to avoid a regression in builds.
2026-08-10Infrastructure took center stage this week: a new type checker replaced mypy, plus a fix for parallel neighbor searches.6 changes
Fix
radius_neighbors fixed with parallel jobs
Fixed a crash when using radius_neighbors with a radius given as a generic list-like value while running computations in parallel.
Refactor
Switched from mypy to pyrefly
The project replaced its mypy type-checking tool with the faster pyrefly checker.
Chore
Automated PR closing action
A new bot automatically closes pull requests whose linked issues aren't ready yet, keeping the queue tidy.
Docs
Memory measurement docs improved
Developer documentation on measuring memory usage during tests was expanded.
Chore
Issue template asks for introductions
The issue template now invites contributors to introduce themselves, encouraging community engagement.
Docs
Overfitting example plot fixed
Corrected a misleading visualization in the underfitting/overfitting tutorial example.
2026-08-03Performance wins dominated: faster random forest training and quicker KNeighborsClassifier fitting, alongside the arrival of a new Newton-CD solver.6 changes
Refactor
Faster random forest training
Random forests train noticeably faster by removing redundant memory conversions during tree building.
Refactor
KNeighborsClassifier fits faster
Speed improvements were made to how the k-nearest-neighbors classifier prepares its internal search structure.
Feature
NewtonCDSolver added
Part 7 of the Newton coordinate-descent series landed, adding a new optimization solver expected to speed up linear models.
Fix
DBSCAN warning silenced
Removed a spurious efficiency warning that appeared when running DBSCAN with precomputed distances.
Chore
Multilabel metric tests added
Added tests ensuring continuous classification metrics handle multilabel inputs correctly.
Chore
Nightly wheel uploads stopped
The project stopped uploading nightly pre-release packages from the main repository, streamlining release infrastructure.
2026-07-27The busiest week of the month, headlined by GridSearchCV learning to keep all outputs consistent with input transformations and major coordinate-descent improvements.6 changes
Feature
"Everything follows X" for GridSearchCV
GridSearchCV now ensures any extra data it carries stays aligned with transformed versions of the main input matrix.
Feature
Coordinate descent made faster
Residuals and column norms are now precomputed in coordinate descent, cutting redundant computation during model fitting.
Fix
LDA/QDA consistency fixes
Resolved inconsistencies between the linear and quadratic discriminant analysis solvers so they behave predictably.
Fix
Error for unsupported categorical splits
Decision trees now raise a clear error when categorical features are combined with the absolute-error criterion, which doesn't support them.
Refactor
indexable uses narwhals
The indexable utility was rewritten to use the narwhals compatibility layer, improving support for pandas-like dataframes.
Docs
Global configuration docs moved
Documentation about global configuration settings got its own dedicated page instead of living inside the parallelism guide.
Dependencies and code review
Dependency advisories
Security Watch
No known advisories across 0 scanned dependencies.
No known advisories in the scanned dependencies.
Code review
No concrete code-level issues confirmed.
Get this report every week for your repos.
GitZoid learns each repo, reports what changed, and flags what needs attention. One flat price for the whole team.
$19 a month, flat · First 10 outputs free · No card required