In [1]:
import os
os.chdir(os.path.dirname(os.getcwd()))

In [2]:
from meka.meka import Meka
java_path = os.path.join(os.environ['JAVA_HOME'], 'bin', 'java')
meka_path = os.path.join(os.environ['MEKA_HOME'], 'lib', '')
meka_train = os.path.abspath("meka/data/scene-train.arff")
meka_test = os.path.abspath("meka/data/scene-test.arff")
meka_classifier = "weka.classifiers.bayes.NaiveBayes"
meka = Meka("meka.classifiers.multilabel.RAkELd", meka_classifier, java_path, meka_path)
meka_predictions, meka_statistics = meka.run(meka_train, meka_test)


C:\Development\Java\jdk1.7.0_67\bin\java -cp "D:\Classification\meka\lib\*" meka.classifiers.multilabel.RAkELd -threshold 0 -t D:\Classification\scikit-multilearn\meka\data\scene-train.arff -T D:\Classification\scikit-multilearn\meka\data\scene-test.arff -verbosity 6 -W weka.classifiers.bayes.NaiveBayes

In [3]:
from skmultilearn.dataset import Dataset
from sklearn.naive_bayes import GaussianNB
from skmultilearn.meta.rakeld import RakelD
skml_train = Dataset.load_dataset_dump("skmultilearn/data/scene-train.dump.bz2")
skml_test = Dataset.load_dataset_dump("skmultilearn/data/scene-test.dump.bz2")
skml_classifier = GaussianNB()
skml = RakelD(skml_classifier, 1164)
skml.fit(skml_train['X'], skml_train['y'])
skml_predictions = skml.predict(skml_test['X'])

In [5]:
import numpy as np
import sklearn.metrics
print("### Predictions equality ###")
print(np.array_equal(np.array(meka_predictions), skml_predictions))
print("### Hamming loss ###")
print("SKML: %f" % sklearn.metrics.hamming_loss(skml_test['y'], skml_predictions))
print("MEKA: %f (%s)" % (sklearn.metrics.hamming_loss(skml_test['y'], np.array(meka_predictions)), meka_statistics['Hammingloss']))
print("### Accuracy score ###")
print("SKML: %f" % sklearn.metrics.accuracy_score(skml_test['y'], skml_predictions))
print("MEKA: %f (%s)" % (sklearn.metrics.accuracy_score(skml_test['y'], np.array(meka_predictions)), meka_statistics['Accuracy']))
print("### F1 score ###")
print("SKML: %f" % sklearn.metrics.f1_score(skml_test['y'], skml_predictions))
print("MEKA: %f (%s)" % (sklearn.metrics.f1_score(skml_test['y'], np.array(meka_predictions)), meka_statistics['F1microavg']))


### Predictions equality ###
False
### Hamming loss ###
SKML: 0.181020
MEKA: 0.159560 (0.819)
### Accuracy score ###
SKML: 0.000000
MEKA: 0.380435 (0.181)
### F1 score ###
SKML: 0.000000
MEKA: 0.649021 (0.307)

In [ ]: