mrkeyoor.com_
Tue 01 Sept 16:20 UTC
Dataevaluationupdated 28 Aug 2026

scikit-learn review

scikit-learn is a Python library for building conventional machine-learning workflows, from preparing data to training and evaluating models. It gives practitioners a consistent interface for common tasks without requiring them to assemble each algorithm and utility from scratch.

+28 / 4dstars / 7d
Verdict

Our build succeeded in 10 seconds, but the test run failed in 8 seconds because its editable loader could not find Ninja. Even with that source-testing rough edge, scikit-learn is an easy recommendation for conventional machine learning in Python because its scope, documentation routes, permissive license, and active maintenance are all clearly evidenced. Use a released package for normal work, and budget time to understand the native build toolchain before contributing from a checkout.

We ran it

Install✓ · 668s41 packages · 209 MB
Build✓ · 10s
Tests✗ · 8sran, no count parsed
Known vulns0(pip-audit)
Repo1824 files~461,996 lines of source · 24.5 MB · 22 CI workflows

Answers from our run

Does scikit-learn build from source?

Dependencies installed in 668 seconds (41 packages), and the build succeeded in 10 seconds. We cloned commit aab0d04 into a clean Debian container with 3 CPUs and no project-specific setup.

Do scikit-learn's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Does scikit-learn have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use scikit-learn?

Teams that need a tiny dependency footprint, because our install brought in 41 packages and used 209 MB

What are the alternatives to scikit-learn?

XGBoost, LightGBM, PyTorch. Our build succeeded in 10 seconds, but the test run failed in 8 seconds because its editable loader could not find Ninja.

Setup3/5Install worked, but source tests stopped on missing Ninja
Docs5/5Stable, development, FAQ, install, and contributor docs
Community5/567,084 stars and code pushed one day before review
Maturity5/5Started in 2007 with a BSD license and release 1.9.0

Discussed on

  1. hnScikit-Learn Version 1.0260 points
  2. hnDive into Machine Learning with Jupyter and Scikit-Learn204 points
  3. hnIntel Extension for Scikit-Learn183 points
  4. hnShow HN: Subreddit classifier using scikit-learn and a high-performance Go proxy170 points
  5. hnScikit-learn user guide (2017) [pdf]140 points

Who it’s for

Python developers building classification, regression, clustering, or preprocessing pipelines
Data scientists who value a consistent estimator interface and extensive reference documentation
Researchers and teachers who need a mature, permissively licensed baseline toolkit
Teams adding classical machine learning to an existing Python data stack

Who it’s NOT for

Teams that need a tiny dependency footprint, because our install brought in 41 packages and used 209 MB
Users expecting source-checkout tests to work immediately in every clean container, because ours stopped on a missing Ninja executable
Workloads centered on specialized deep-learning training, which is not the focus evidenced by this README
People unwilling to manage Python, NumPy, SciPy, and version compatibility

Setup reality

In our run, installation succeeded in 668 seconds with 41 packages consuming 209 MB, and the build then succeeded in 10 seconds. The test command failed after 8 seconds with exit code 4 because the editable loader tried to launch a Ninja executable at a temporary build path that did not exist. That is more friction than the README's simple pip install -U scikit-learn or Conda commands suggest for ordinary users, although our source checkout and test path is a tougher scenario than installing a release. The log identifies the missing executable, but it does not establish why that file was absent, so we would not guess at the cause.

A broad machine-learning standard, not a specialist appliance

scikit-learn has been developing since 2007, and its purpose is clear: provide machine learning for Python on top of SciPy. It is not a hosted platform. It supplies reusable estimators, preprocessing tools, plotting helpers, and conventions needed to turn numeric data into repeatable model workflows. The 3-Clause BSD license also suits commercial and academic use.

That breadth is the main reason to choose it. Instead of learning unrelated APIs for each technique, teams can build around scikit-learn's established patterns and move between common machine-learning tasks with less conceptual switching. The README points to stable and development documentation, an FAQ, installation instructions, a changelog, and a detailed development guide. Release 1.9.0 arrived on June 2, 2026, so users can anchor production environments to a named release while still seeing upcoming documentation separately.

What happened when we ran it

We cloned commit aab0d04 into a fresh, unprivileged Debian container with Python 3.12, 3 CPUs, and 8 GB of RAM. The checkout contained 1,824 files, roughly 461,996 lines of source, and occupied 24.5 MB. Installation succeeded, but it was not quick: it took 668 seconds, installed 41 packages, and consumed 209 MB on disk. Those are measurements from our box, not general performance claims.

The build itself succeeded in 10 seconds. Testing did not: it exited with code 4 after 8 seconds. The final log shows the editable scikit-learn loader attempting to invoke Ninja from /work/home/.uv/builds-v0/.tmpkZrYrJ/bin/ninja, followed by FileNotFoundError because that executable was absent. The evidence does not tell us whether packaging, cleanup, path handling, or another step made Ninja unavailable.

This distinction matters. The README's user path is a short pip install -U scikit-learn command, with Conda as the other stated option, while our exercise cloned source, installed it, built it, and invoked its tests. A published wheel may not meet the same editable-build path. A contributor should still treat our 8-second test failure as a real warning and confirm that the expected native build executable survives into testing.

Our security scan found 0 known vulnerabilities with pip-audit. That describes dependency versions resolved in this run, not every optional environment or future advisory. The repository contained 22 CI workflow files, signaling substantial development automation. We found no Dockerfile and no top-level tests directory, so newcomers should follow the contributor documentation instead of assuming a generic layout.

Its strongest feature is the surrounding discipline

The README names minimum versions for Python, NumPy, SciPy, Narwhals, joblib, and threadpoolctl, then separates optional requirements for plotting and examples. Python 3.11 is the stated minimum, while Matplotlib 3.6.1 is needed for plotting capabilities. That specificity helps teams catch compatibility problems before they bury the library inside an application.

Project operations look mature as well. The README exposes unit-test status, coverage, nightly wheel generation, Ruff formatting, supported Python versions, PyPI status, a DOI, and a benchmark link. It explains how to run pytest sklearn, documents the SKLEARN_SEED control for random generation during testing, and routes contributors to a fuller guide before pull requests. These are concrete signs of a project designed to be maintained, cited, packaged, and extended over years.

Support routes are unusually visible. Users can choose the website, blog, mailing list, GitHub Discussions, Stack Overflow, or Discord, while researchers get a dedicated citation page. The repository has 67,084 stars, but the more meaningful health signal is current work: the latest push was August 27, 2026, only 1 day before this review. Version 1.9.0 is also less than 3 months old, supporting an actively maintained verdict.

The rough edges are scale, prerequisites, and issue triage

A mature scientific Python stack is not lightweight. Our 209 MB environment and 41 installed packages show the cost before optional plotting and example dependencies enter the picture. The README lists minimum versions clearly, but its simple installation section cannot prepare source contributors for every native build failure. Our missing Ninja executable is the sort of boundary between Python packaging and system tooling that can consume CI time.

The open issue count is 2,132. That does not prove neglect in a repository with 67,084 stars and a push yesterday, but it implies a busy tracker where searching for duplicates and reading maintainer guidance matter. New contributors should expect review standards and a large codebase, roughly 461,996 source lines in our checkout, rather than a small utility project.

One library cannot solve data collection, deployment, monitoring, governance, or user-facing delivery. scikit-learn is strongest inside a larger system. You still need clean data, application code that calls the fitted pipeline, versioned artifacts, and operational checks appropriate to the consequences of predictions. Its library surface reduces modeling friction, but not product engineering.

It belongs in the modeling layer of a Python stack

Place scikit-learn after ingestion and data validation, then use its preprocessing and estimators to create a repeatable training pipeline. Persist and serve the artifact through infrastructure chosen for your application, while pinning training dependencies to a release such as 1.9.0. Plotting extras can remain in analysis environments if production inference does not need them.

Choose XGBoost or LightGBM when the decision has narrowed to their tree-boosting approaches. Choose PyTorch when custom neural-network training is central. For general conventional machine learning, scikit-learn remains the sensible default: broad enough for exploration, disciplined enough for production use, and active enough that its June 2026 release is backed by work through August 27.

Alternatives

ProjectWhat it isPick it when
XGBoostA focused gradient-boosting library with Python bindings.pick this instead when boosted decision trees are the center of the workload rather than one estimator among many
LightGBMA gradient-boosting framework built around tree-based learning.pick this instead when you specifically want its tree-boosting approach and do not need scikit-learn's wider toolbox
PyTorch gh↗A tensor and deep-learning platform for constructing and training neural networks.pick this instead when custom neural-network training is the actual job

What people are saying

  1. [velocity-scout] scikit-learn/scikit-learn

Sources

  1. scikit-learn GitHub repository
  2. scikit-learn documentation and homepage

More data reviews

turso · TrackersListCollection · dash · getcontact-cli · awesome-zhuiju-free · iggy · the whole board →