scikit-learn

by scikit-learn (NumFOCUS-sponsored open-source project)

A Python library of classical machine-learning algorithms (classification, regression, clustering, dimensionality reduction) built on NumPy and SciPy.

framework-libraryopen-sourcepythonself-hosted
Visit WebsiteGitHubscikit-learn.org

At a Glance

Type

Frameworks and libraries

Pricing

FreeFree and open source under the BSD-3-Clause licence; no paid tiers, seats or usage limits.

Best For

Building classical ML pipelines (classification, regression, clustering, preprocessing) in Python on top of NumPy/SciPy, from prototyping through to production scoring scripts.

Platforms

Python, Linux, macOS, Windows

Founded

2007

Free Tier

Available

Licence

Open Source

Key Features

Pros & Cons

Strengths

  • No cost and no account needed: BSD-3-Clause licence, pip/conda install
  • Consistent, well-documented API makes it easy to swap algorithms in a pipeline
  • Backed by long-running institutional support (Inria, NVIDIA, Intel and others named on its site)

Limitations

  • Its own FAQ rules out deep learning and reinforcement learning as out of scope by design
  • GPU acceleration only covers a subset of estimators (tree-based models, k-means and k-NN are explicitly excluded)
  • No hosted API, managed service or official CLI — a developer runs and scales it themselves as a Python library

Integrations

NumPySciPymatplotlibjoblibpandasconda-forgePyTorch (via Array API for GPU support)CuPy (via Array API for GPU support)

What it is

scikit-learn is a Python library for classical machine learning: classification, regression, clustering, dimensionality reduction, model selection and preprocessing, accessed through a consistent fit/predict/transform API. It is built on NumPy and SciPy, with matplotlib used for its plotting utilities.

Interface and dependencies

Install with pip install scikit-learn or via conda-forge. Current releases require Python 3.10+, NumPy 1.24.1+, SciPy 1.10.0+ and joblib 1.4.0+; matplotlib, pandas and scikit-image are optional extras used for plotting and some examples. There's no hosted API, service or official command-line interface — it's used as a Python library, on Windows, macOS or Linux.

A real use

A developer building a churn-prediction pipeline would load a CSV into pandas, use scikit-learn's Pipeline to chain preprocessing (scaling, encoding) with a classifier such as RandomForestClassifier or LogisticRegression, tune it with GridSearchCV, and evaluate with the built-in metrics module — all without writing training loops or managing GPUs.

Limits

Its own FAQ states deep learning and reinforcement learning "both require a rich vocabulary to define an architecture... neither of these fit within the design constraints of scikit-learn," and points users to TensorFlow, Keras or PyTorch instead. GPU support exists only for a subset of estimators via the Array API (PyTorch or CuPy array input); tree-based models, k-means and k-nearest neighbours are explicitly excluded because they rely on Cython-level optimisations that can't be expressed that way.

Licence and governance

BSD-3-Clause licensed and NumFOCUS-sponsored since 2020, with a community governance structure (maintainers, documentation and contributor-experience teams) rather than a single vendor.

Frequently Asked Questions

Does scikit-learn support deep learning?
No. Its FAQ says deep learning and reinforcement learning don't fit its design constraints, and points to TensorFlow, Keras or PyTorch instead; it ships only a basic multilayer perceptron that gets bug fixes, not new features.
Can it run on a GPU?
Partially. A growing set of estimators can use PyTorch or CuPy arrays via Array API support, but tree-based models, k-means and k-nearest neighbours cannot, per the project's FAQ.

Last updated on