scikit-multilearn API Reference

Scikit-multilearn is a BSD-licensed library for multi-label classification that is built on top of the well-known scikit-learn ecosystem.

Classifiers and tools

Algorithm Adaptation approaches

The skmultilearn.adapt module implements algorithm adaptation approaches to multi-label classification.

Algorithm adaptation methods for multi-label classification concentrate on adapting single-label classification algorithms to the multi-label case usually by changes in cost/decision functions.

Currently the following algorithm adaptation classification schemes are available in scikit-multilearn:

Classifier Description
BRkNNaClassifier a Binary Relevance kNN classifier that assigns a label if at least half of the neighbors are also classified with the label
BRkNNbClassifier a Binary Relevance kNN classifier that assigns top m labels of neighbors with m - average number of labels assigned to neighbors
MLkNN a multi-label adapted kNN classifier with bayesian prior corrections
MLARAM a multi-Label Hierarchical ARAM Neural Network

Problem Transformation approaches

The skmultilearn.problem_transform module provides classifiers that follow the problem transformation approaches to multi-label classification.

The problem transformation approach to multi-label classification converts multi-label problems to single-label problems: single-class or multi-class.

Classifier Description
BinaryRelevance treats each label as a separate single-class classification problem
ClassifierChain treats each label as a part of a conditioned chain of single-class classification problems
LabelPowerset treats each label combination as a separate class with one multi-class classification problem

Ensembles of classifiers

The skmultilearn.ensemble module implements ensemble classification schemes that construct an ensemble of base multi-label classifiers.

Currently the following ensemble classification schemes are available in scikit-multilearn:

Classifier name Description
RakelD Distinct RAndom k-labELsets multi-label classifier
RakelO Overlapping RAndom k-labELsets multi-label classifier.
LabelSpacePartitioningClassifier a label space partitioning classifier that trains a classifier per label subspace as clustered using methods from skmultilearn.cluster.
MajorityVotingClassifier a label space division classifier that trains a classifier per label subspace as clustered using methods from skmultilearn.cluster and assign labels if the majority of classifiers that contain the label agree on the assignment.

Label Space Clusterers

The skmultilearn.cluster module gathers label space clustering methods.

Name Description
FixedLabelSpaceClusterer Return a predefined fixed clustering, usually driven by expert knowledge
MatrixLabelSpaceClusterer Cluster the label space using a scikit-compatible matrix-based clusterer
GraphToolLabelGraphClusterer Fits a Stochastic Block Model to the Label Graph and infers the communities
StochasticBlockModel A Stochastic Blockmodel class
IGraphLabelGraphClusterer Clusters label space using igraph community detection
RandomLabelSpaceClusterer Randomly divides label space into equally-sized clusters
NetworkXLabelGraphClusterer Cluster label space with NetworkX community detection

External classifiers

The skmultilearn.ext provides wrappers for other multi-label classification libraries. Currently it provides a wrapper for:

Currently the available classes include:

Name Description
Meka Wrapper for the Multilabel Extension to WEKA - MEKA library
download_meka() Helper function for installing MEKA

Model selection and data manipulation

The skmultilearn.model_selection module provides implementations multi-label stratification methods useful for parameter estimation.

Currently the available modules include:

Name Description
iterative_stratification Iterative stratification
measures Stratification quality measures package