Skip to content

Commit a389918

Browse files
authored
Multi-Label Embedding Classification (scikit-multilearn#140)
support clems, lnemlc and scikit-learn based embeddings
1 parent a7e3cbb commit a389918

File tree

10 files changed

+1169
-23
lines changed

10 files changed

+1169
-23
lines changed

.travis.yml

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,14 @@ matrix:
1919
env: MEKA_CLASSPATH=/Users/travis/MEKA/meka/lib/
2020

2121
script:
22-
- if [[ "$TOXENV" == "linux_py2" ]]; then docker exec -it scikit_multilearn_dev_test_docker python -m pytest /home/python-dev/repo; fi
23-
- if [[ "$TOXENV" == "linux_py3" ]]; then docker exec -it scikit_multilearn_dev_test_docker python3 -m pytest /home/python-dev/repo; fi
24-
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then python3 -m pytest $TRAVIS_BUILD_DIR; fi
25-
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then python -m pytest $TRAVIS_BUILD_DIR; fi
22+
- if [[ "$TOXENV" == "linux_py2" ]]; then docker exec -it scikit_multilearn_dev_test_docker python2 -m pytest -p no:warnings /home/python-dev/repo; fi
23+
- if [[ "$TOXENV" == "linux_py3" ]]; then docker exec -it scikit_multilearn_dev_test_docker python3 -m pytest -p no:warnings /home/python-dev/repo; fi
24+
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then python3 -m pytest -p no:warnings $TRAVIS_BUILD_DIR; fi
25+
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then python -m pytest -p no:warnings $TRAVIS_BUILD_DIR; fi
2626

2727
before_install:
2828
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then docker rmi -f niedakh/scikit-multilearn-dev:latest ; fi
29+
#- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then docker rm -f scikit_multilearn_dev_test_docker ; fi
2930
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then docker pull niedakh/scikit-multilearn-dev:latest ; fi
3031

3132
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then pip2 uninstall -y numpy ; fi
@@ -37,20 +38,25 @@ before_install:
3738
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install graph-tool ; fi
3839
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then mkdir ~/MEKA && wget https://adams.cms.waikato.ac.nz/snapshots/meka/meka-snapshot.zip -O ~/MEKA/meka.zip; fi
3940
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then cd ~/MEKA/ && unzip -a meka.zip && mv meka-* meka; fi
41+
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then git clone https://github.com/thunlp/OpenNE.git ~/OpenNE && pip3 install -e ~/OpenNE/src; fi
4042

4143
install:
4244
- if [[ "$TRAVIS_OS_NAME" != "osx" ]]; then docker run -e "MEKA_CLASSPATH=/opt/meka/lib/" -v "$TRAVIS_BUILD_DIR:/home/python-dev/repo" --name scikit_multilearn_dev_test_docker -d niedakh/scikit-multilearn-dev:latest; fi
43-
- if [[ "$TOXENV" == "linux_py2" ]]; then docker exec -it scikit_multilearn_dev_test_docker pip install -r /home/python-dev/repo/requirements-all.txt; fi
44-
- if [[ "$TOXENV" == "linux_py3" ]]; then docker exec -it scikit_multilearn_dev_test_docker pip3 install -r /home/python-dev/repo/requirements-all.txt; fi
45-
- if [[ "$TOXENV" == "linux_py2" ]]; then docker exec -it scikit_multilearn_dev_test_docker pip install -r /home/python-dev/repo/requirements/keras.txt; fi
46-
- if [[ "$TOXENV" == "linux_py3" ]]; then docker exec -it scikit_multilearn_dev_test_docker pip3 install -r /home/python-dev/repo/requirements/keras.txt; fi
45+
- if [[ "$TOXENV" == "linux_py2" ]]; then docker exec -it scikit_multilearn_dev_test_docker pip2 install --upgrade --force-reinstall numpy scipy scikit-learn; fi
46+
- if [[ "$TOXENV" == "linux_py3" ]]; then docker exec -it scikit_multilearn_dev_test_docker pip3 install --upgrade --force-reinstall numpy scipy scikit-learn; fi
47+
#- if [[ "$TOXENV" == "linux_py2" ]]; then docker exec -it scikit_multilearn_dev_test_docker pip install -r /home/python-dev/repo/requirements/keras.txt; fi
48+
#- if [[ "$TOXENV" == "linux_py3" ]]; then docker exec -it scikit_multilearn_dev_test_docker pip3 install -r /home/python-dev/repo/requirements/keras.txt; fi
4749
- if [[ "$TRAVIS_OS_NAME" != "osx" ]]; then find $TRAVIS_BUILD_DIR -name \*.pyc -delete; fi
4850

49-
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then cd $TRAVIS_BUILD_DIR && pip install -r requirements-all.txt ; fi
5051
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then cd $TRAVIS_BUILD_DIR && pip install -r requirements/keras.txt; fi
51-
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then cd $TRAVIS_BUILD_DIR && pip3 install -r requirements-all.txt; fi
52+
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then cd $TRAVIS_BUILD_DIR && pip install -r requirements-all.txt ; fi
53+
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then cd $TRAVIS_BUILD_DIR && pip install --upgrade --force-reinstall numpy scipy scikit-learn; fi
54+
5255
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then cd $TRAVIS_BUILD_DIR && pip3 install https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.12.0-py3-none-any.whl; fi
5356
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then cd $TRAVIS_BUILD_DIR && pip3 install -r requirements/keras.txt; fi
57+
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then cd $TRAVIS_BUILD_DIR && pip3 install -r requirements-all.txt; fi
58+
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then cd $TRAVIS_BUILD_DIR && pip3 install --upgrade --force-reinstall numpy scipy scikit-learn; fi
59+
5460

5561
notifications:
5662
slack:

appveyor.yml

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -25,21 +25,21 @@ environment:
2525

2626
# Python 2.7.10 is the latest version and is not pre-installed.
2727

28-
- PYTHON: "C:\\Python27.10"
29-
PYTHON_VERSION: "2.7.10"
28+
- PYTHON: "C:\\Python27.14"
29+
PYTHON_VERSION: "2.7.14"
3030
PYTHON_ARCH: "32"
3131
HAS_KERAS: "0"
3232

33-
- PYTHON: "C:\\Python27.10-x64"
34-
PYTHON_VERSION: "2.7.10"
33+
- PYTHON: "C:\\Python27.14-x64"
34+
PYTHON_VERSION: "2.7.14"
3535
PYTHON_ARCH: "64"
3636
HAS_KERAS: "0"
3737

3838
# Pre-installed Python versions, which Appveyor may upgrade to
3939
# a later point release.
4040
# See: http://www.appveyor.com/docs/installed-software#python
4141

42-
- PYTHON: "C:\\Python35"
42+
- PYTHON: "C:\\Python36"
4343
PYTHON_VERSION: "3.6.x" # currently 3.4.3
4444
PYTHON_ARCH: "32"
4545
HAS_KERAS: "0"
@@ -81,30 +81,34 @@ install:
8181
- "SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PATH%"
8282

8383
# Check that we have the expected version and architecture for Python
84-
- "python --version"
85-
- "python -c \"import struct; print(struct.calcsize('P') * 8)\""
84+
- "%PYTHON%\\python.exe --version"
85+
- "%PYTHON%\\python.exe -c \"import struct; print(struct.calcsize('P') * 8)\""
8686

8787
# Upgrade to the latest version of pip to avoid it displaying warnings
8888
# about it being out of date.
89-
- "python -m pip install --upgrade pip"
89+
- "%PYTHON%\\python.exe -m pip install --upgrade pip"
9090

9191
# Install the build dependencies of the project. If some dependencies contain
9292
# compiled extensions and are not provided as pre-built wheel packages,
9393
# pip will build them from source using the MSVC compiler matching the
9494
# target Python version and architecture
95-
- "pip install -r requirements\\base.txt"
96-
- "pip install -r requirements\\meka.txt"
97-
- ps: If ($env:HAS_KERAS -eq "1") { & pip install -r requirements\\keras.txt }
95+
- "%PYTHON%\\Scripts\\pip.exe install -r requirements\\base.txt"
96+
- "%PYTHON%\\Scripts\\pip.exe install -r requirements\\meka.txt"
97+
- ps: If ($env:HAS_KERAS -eq "1") { & $env:PYTHON\Scripts\pip.exe install -r requirements\keras.txt }
98+
- git clone https://github.com/thunlp/OpenNE C:\projects\OpenNE
99+
- ps: If ($env:HAS_KERAS -eq "1") { & $env:PYTHON\Scripts\pip.exe install -e C:/projects/OpenNE/src }
100+
- "%PYTHON%\\Scripts\\pip.exe install --upgrade scikit-learn numpy scipy"
98101
# - "pip install -r requirements\\gpl.txt"
99-
- "pip install -r requirements\\test.txt"
102+
- "%PYTHON%\\Scripts\\pip.exe install -r requirements\\test.txt"
103+
- "%PYTHON%\\Scripts\\pip.exe install --upgrade --force-reinstall numpy scipy scikit-learn"
100104

101105
#build_script:
102106
# Build the compiled extension
103107
#- "%CMD_IN_ENV% python setup.py build"
104108

105109
test_script:
106110
# Run the project tests
107-
- "py.test skmultilearn"
111+
- "%PYTHON%\\python.exe -m pytest -p no:warnings skmultilearn"
108112

109113
#after_test:
110114
# If tests are successful, create binary packages for the project.

skmultilearn/embedding/__init__.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
"""
2+
The :mod:`skmultilearn.embedding` module provides implementations of label space embedding methods and a general
3+
embedding based classifier.
4+
5+
6+
+--------------------------------------------------------+---------------------------------------------------------------+
7+
| Name | Description |
8+
+========================================================+===============================================================+
9+
| :class:`~skmultilearn.embedding.CLEMS` | Cost-Sensitive Label Embedding with Multidimensional Scaling |
10+
+--------------------------------------------------------+---------------------------------------------------------------+
11+
| :class:`~skmultilearn.embedding.OpenNetworkEmbedder` | Label Network Embedding for Multilabel Classification |
12+
+--------------------------------------------------------+---------------------------------------------------------------+
13+
| :class:`~skmultilearn.embedding.SKLearnEmbedder` | Wrapper for scikit-learn embedders |
14+
+--------------------------------------------------------+---------------------------------------------------------------+
15+
| :class:`~skmultilearn.embedding.EmbeddingClassifier` | A general embedding-based classifier |
16+
+--------------------------------------------------------+---------------------------------------------------------------+
17+
18+
"""
19+
20+
from .clems import CLEMS
21+
from .skembedings import SKLearnEmbedder
22+
from .classifier import EmbeddingClassifier
23+
import sys, platform
24+
25+
__all__ = [
26+
'CLEMS',
27+
'SKLearnEmbedder',
28+
'EmbeddingClassifier'
29+
]
30+
31+
if not (sys.version_info[0] == 2 or platform.architecture()[0] == '32bit'):
32+
from .openne import OpenNetworkEmbedder
33+
34+
__all__.append('OpenNetworkEmbedder')

0 commit comments

Comments
 (0)