.. _related_projects:
=====================================
Related Projects
=====================================
Projects implementing the scikit-learn estimator API are encouraged to use
the `scikit-learn-contrib template `_
which facilitates best practices for testing and documenting estimators.
The `scikit-learn-contrib GitHub organisation `_
also accepts high-quality contributions of repositories conforming to this
template.
Below is a list of sister-projects, extensions and domain specific packages.
Interoperability and framework enhancements
-------------------------------------------
These tools adapt scikit-learn for use with other technologies or otherwise
enhance the functionality of scikit-learn's estimators.
**Data formats**
- `sklearn_pandas `_ bridge for
scikit-learn pipelines and pandas data frame with dedicated transformers.
- `sklearn_xarray `_ provides
compatibility of scikit-learn estimators with xarray data structures.
**Auto-ML**
- `auto_ml `_
Automated machine learning for production and analytics, built on scikit-learn
and related projects. Trains a pipeline wth all the standard machine learning
steps. Tuned for prediction speed and ease of transfer to production environments.
- `auto-sklearn `_
An automated machine learning toolkit and a drop-in replacement for a
scikit-learn estimator
- `TPOT `_
An automated machine learning toolkit that optimizes a series of scikit-learn
operators to design a machine learning pipeline, including data and feature
preprocessors as well as the estimators. Works as a drop-in replacement for a
scikit-learn estimator.
- `scikit-optimize `_
A library to minimize (very) expensive and noisy black-box functions. It
implements several methods for sequential model-based optimization, and
includes a replacement for ``GridSearchCV`` or ``RandomizedSearchCV`` to do
cross-validated parameter search using any of these strategies.
**Experimentation frameworks**
- `REP `_ Environment for conducting data-driven
research in a consistent and reproducible way
- `ML Frontend `_ provides
dataset management and SVM fitting/prediction through
`web-based `_
and `programmatic `_
interfaces.
- `Scikit-Learn Laboratory
`_ A command-line
wrapper around scikit-learn that makes it easy to run machine learning
experiments with multiple learners and large feature sets.
- `Xcessiv `_ is a notebook-like
application for quick, scalable, and automated hyperparameter tuning
and stacked ensembling. Provides a framework for keeping track of
model-hyperparameter combinations.
**Model inspection and visualisation**
- `eli5 `_ A library for
debugging/inspecting machine learning models and explaining their
predictions.
- `mlxtend `_ Includes model visualization
utilities.
- `scikit-plot `_ A visualization library
for quick and easy generation of common plots in data analysis and machine learning.
- `yellowbrick `_ A suite of
custom matplotlib visualizers for scikit-learn estimators to support visual feature
analysis, model selection, evaluation, and diagnostics.
**Model export for production**
- `onnxmltools `_ Serializes many
Scikit-learn pipelines to `ONNX `_ for interchange and
prediction.
- `sklearn2pmml `_
Serialization of a wide variety of scikit-learn estimators and transformers
into PMML with the help of `JPMML-SkLearn `_
library.
- `sklearn-porter `_
Transpile trained scikit-learn models to C, Java, Javascript and others.
- `sklearn-compiledtrees `_
Generate a C++ implementation of the predict function for decision trees (and
ensembles) trained by sklearn. Useful for latency-sensitive production
environments.
Other estimators and tasks
--------------------------
Not everything belongs or is mature enough for the central scikit-learn
project. The following are projects providing interfaces similar to
scikit-learn for additional learning algorithms, infrastructures
and tasks.
**Structured learning**
- `sktime `_ A scikit-learn compatible toolbox for machine learning with time series including time series classification/regression and (supervised/panel) forecasting.
- `Seqlearn `_ Sequence classification
using HMMs or structured perceptron.
- `HMMLearn `_ Implementation of hidden
markov models that was previously part of scikit-learn.
- `PyStruct `_ General conditional random fields
and structured prediction.
- `pomegranate `_ Probabilistic modelling
for Python, with an emphasis on hidden Markov models.
- `sklearn-crfsuite `_
Linear-chain conditional random fields
(`CRFsuite `_ wrapper with
sklearn-like API).
**Deep neural networks etc.**
- `pylearn2 `_ A deep learning and
neural network library build on theano with scikit-learn like interface.
- `sklearn_theano `_ scikit-learn compatible
estimators, transformers, and datasets which use Theano internally
- `nolearn `_ A number of wrappers and
abstractions around existing neural network libraries
- `keras `_ Deep Learning library capable of
running on top of either TensorFlow or Theano.
- `lasagne `_ A lightweight library to
build and train neural networks in Theano.
- `skorch `_ A scikit-learn compatible
neural network library that wraps PyTorch.
**Broad scope**
- `mlxtend `_ Includes a number of additional
estimators as well as model visualization utilities.
- `sparkit-learn `_ Scikit-learn
API and functionality for PySpark's distributed modelling.
**Other regression and classification**
- `xgboost `_ Optimised gradient boosted decision
tree library.
- `ML-Ensemble `_ Generalized
ensemble learning (stacking, blending, subsemble, deep ensembles,
etc.).
- `lightning `_ Fast
state-of-the-art linear model solvers (SDCA, AdaGrad, SVRG, SAG, etc...).
- `py-earth `_ Multivariate
adaptive regression splines
- `Kernel Regression `_
Implementation of Nadaraya-Watson kernel regression with automatic bandwidth
selection
- `gplearn `_ Genetic Programming
for symbolic regression tasks.
- `multiisotonic `_ Isotonic
regression on multidimensional features.
- `scikit-multilearn `_ Multi-label classification with
focus on label space manipulation.
- `seglearn `_ Time series and sequence
learning using sliding window segmentation.
**Decomposition and clustering**
- `lda `_: Fast implementation of latent
Dirichlet allocation in Cython which uses `Gibbs sampling
`_ to sample from the true
posterior distribution. (scikit-learn's
:class:`sklearn.decomposition.LatentDirichletAllocation` implementation uses
`variational inference
`_ to sample from
a tractable approximation of a topic model's posterior distribution.)
- `Sparse Filtering `_
Unsupervised feature learning based on sparse-filtering
- `kmodes `_ k-modes clustering algorithm for
categorical data, and several of its variations.
- `hdbscan `_ HDBSCAN and Robust Single
Linkage clustering algorithms for robust variable density clustering.
- `spherecluster `_ Spherical
K-means and mixture of von Mises Fisher clustering routines for data on the
unit hypersphere.
**Pre-processing**
- `categorical-encoding
`_ A
library of sklearn compatible categorical variable encoders.
- `imbalanced-learn
`_ Various
methods to under- and over-sample datasets.
Statistical learning with Python
--------------------------------
Other packages useful for data analysis and machine learning.
- `Pandas `_ Tools for working with heterogeneous and
columnar data, relational queries, time series and basic statistics.
- `theano `_ A CPU/GPU array
processing framework geared towards deep learning research.
- `statsmodels `_ Estimating and analysing
statistical models. More focused on statistical tests and less on prediction
than scikit-learn.
- `PyMC `_ Bayesian statistical models and
fitting algorithms.
- `Sacred `_ Tool to help you configure,
organize, log and reproduce experiments
- `Seaborn `_ Visualization library based on
matplotlib. It provides a high-level interface for drawing attractive statistical graphics.
- `Deep Learning `_ A curated list of deep learning
software libraries.
Recommendation Engine packages
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- `GraphLab
`_
Implementation of classical recommendation techniques (in C++, with
Python bindings).
- `implicit `_, Library for implicit
feedback datasets.
- `lightfm `_ A Python/Cython
implementation of a hybrid recommender system.
- `OpenRec `_ TensorFlow-based
neural-network inspired recommendation algorithms.
- `Spotlight `_ Pytorch-based
implementation of deep recommender models.
- `Surprise Lib `_ Library for explicit feedback
datasets.
Domain specific packages
~~~~~~~~~~~~~~~~~~~~~~~~
- `scikit-image `_ Image processing and computer
vision in python.
- `Natural language toolkit (nltk) `_ Natural language
processing and some machine learning.
- `gensim `_ A library for topic modelling,
document indexing and similarity retrieval
- `NiLearn `_ Machine learning for neuro-imaging.
- `AstroML `_ Machine learning for astronomy.
- `MSMBuilder `_ Machine learning for protein
conformational dynamics time series.
- `scikit-surprise `_ A scikit for building and
evaluating recommender systems.
Snippets and tidbits
---------------------
The `wiki `_ has more!