- Notifications
You must be signed in to change notification settings - Fork176
A scikit-learn based module for multi-label et. al. classification
License
scikit-multilearn/scikit-multilearn
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
scikit-multilearn is a Python module capable of performing multi-labellearning tasks. It is built on-top of various scientific Python packages(numpy,scipy) andfollows a similar API to that ofscikit-learn.
- Website:scikit.ml
- Documentation:scikit-multilearn Documentation
Native Python implementation. A native Python implementation for a variety of multi-label classification algorithms. To see the list of all supported classifiers, check thislink.
Interface to Meka. A Meka wrapper class is implemented for reference purposes and integration. This provides access to all methods available in MEKA, MULAN, and WEKA — the reference standard in the field.
Builds upon giants! Team-up with the power of numpy and scikit. You can use scikit-learn's base classifiers as scikit-multilearn's classifiers. In addition, the two packages follow a similar API.
To install scikit-multilearn, simply type the following command:
$ pip install scikit-multilearn
This will install the latest release from the Python package index. If youwish to install the bleeding-edge version, then clone this repository andrunsetup.py:
$ git clone https://github.com/scikit-multilearn/scikit-multilearn.git$cd scikit-multilearn$ python setup.pyIn most cases requirements are installed when you install usingpip install scikit-multilearn or runpython setup.py install. There are also optional dependenciespip install scikit-multilearn[gpl,keras,meka] installs the GPL-incurring igraph for for igraph library based clusterers, keras for the keras classifiers and requirements for the meka bridge respectively.
To installopenNE, run:
pip install'openne @ git+https://github.com/thunlp/OpenNE.git@master#subdirectory=src'Note that installing the GPL licensed graphtool, for graphtool based clusters, is complicated, and must be done manually, please see:graphtool install instructions
Before proceeding to classification, this library assumes that you havea dataset with the following matrices:
x_train,x_test: training and test feature matrices of size(n_samples, n_features)y_train,y_test: training and test label matrices of size(n_samples, n_labels)
Suppose we wanted to use a problem-transformation method called BinaryRelevance, which treats each label as a separate single-label classificationproblem, to a Support-vector machine (SVM) classifier, we simply performthe following tasks:
# Import BinaryRelevance from skmultilearnfromskmultilearn.problem_transformimportBinaryRelevance# Import SVC classifier from sklearnfromsklearn.svmimportSVC# Setup the classifierclassifier=BinaryRelevance(classifier=SVC(),require_dense=[False,True])# Trainclassifier.fit(X_train,y_train)# Predicty_pred=classifier.predict(X_test)
More examples and use-cases can be seen in thedocumentation. For using the MEKAwrapper, check thislink.
This project is open for contributions. Here are some of the ways foryou to contribute:
- Bug reports/fix
- Features requests
- Use-case demonstrations
- Documentation updates
In case you want to implement your own multi-label classifier, pleaseread ourDeveloper's Guide to helpyou integrate your implementation in our API.
To make a contribution, just fork this repository, push the changesin your fork, open up an issue, and make a Pull Request!
We're also available in Slack! Just go to ourslack group.
If you used scikit-multilearn in your research or project, pleaseciteour work:
@ARTICLE{2017arXiv170201460S,author ={{Szyma{\'n}ski}, P. and {Kajdanowicz}, T.},title ="{A scikit-based Python environment for performing multi-label classification}",journal ={ArXiv e-prints},archivePrefix ="arXiv",eprint ={1702.01460},year =2017,month = feb}
About
A scikit-learn based module for multi-label et. al. classification
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.