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.