diff --git a/src/shogun/labels/MulticlassLabels.cpp b/src/shogun/labels/MulticlassLabels.cpp index 8219d152c19..fda2f223568 100644 --- a/src/shogun/labels/MulticlassLabels.cpp +++ b/src/shogun/labels/MulticlassLabels.cpp @@ -25,6 +25,15 @@ CMulticlassLabels::CMulticlassLabels(CFile* loader) : CDenseLabels(loader) init(); } +CMulticlassLabels::CMulticlassLabels(CBinaryLabels* labels) + : CDenseLabels(labels->get_num_labels()) +{ + init(); + + for (index_t i = 0; i < labels->get_num_labels(); ++i) + m_labels[i] = (labels->get_label(i) == 1 ? 1 : 0); +} + CMulticlassLabels::~CMulticlassLabels() { } diff --git a/src/shogun/labels/MulticlassLabels.h b/src/shogun/labels/MulticlassLabels.h index 5ea4b0fb20f..b117a80ad06 100644 --- a/src/shogun/labels/MulticlassLabels.h +++ b/src/shogun/labels/MulticlassLabels.h @@ -57,6 +57,14 @@ class CMulticlassLabels : public CDenseLabels */ CMulticlassLabels(CFile* loader); + /** + * Convert binary labels to multiclass labels, + * namely -1 is mapped to 0 and 1 to 1. + * + * @param labels Binary labels + */ + CMulticlassLabels(CBinaryLabels* labels); + /** destructor */ ~CMulticlassLabels();