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)
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']))
In [ ]: