Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Updated multiclass machine base class
  • Loading branch information
lisitsyn committed Mar 8, 2012
1 parent 0c71dba commit ec86ec8
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 29 deletions.
28 changes: 13 additions & 15 deletions src/shogun/machine/multiclass/MulticlassMachine.cpp
Expand Up @@ -17,32 +17,21 @@ using namespace shogun;
CMulticlassMachine::CMulticlassMachine()
: CMachine(), m_multiclass_strategy(ONE_VS_REST_STRATEGY), m_rejection_strategy(NULL)
{
init();
register_parameters();
}

CMulticlassMachine::CMulticlassMachine(
EMulticlassStrategy strategy,
CMachine* machine, CLabels* labs)
: CMachine(), m_multiclass_strategy(strategy), m_machine(machine), m_rejection_strategy(NULL)
: CMachine(), m_multiclass_strategy(strategy), m_rejection_strategy(NULL)
{
set_labels(labs);
SG_REF(machine);
init();
m_machine = machine;
register_parameters();
}

CMulticlassMachine::~CMulticlassMachine()
{
cleanup();
}

void CMulticlassMachine::init()
{
m_parameters->add((machine_int_t*)&m_multiclass_strategy,"m_multiclass_type");
m_parameters->add((CSGObject**)&m_machine, "m_machine");
m_parameters->add_vector((CSGObject***)&m_machines.vector,&m_machines.vlen, "m_machines");
}

void CMulticlassMachine::cleanup()
{
SG_UNREF(m_machine);

Expand All @@ -52,6 +41,14 @@ void CMulticlassMachine::cleanup()
m_machines.destroy_vector();
}

void CMulticlassMachine::register_parameters()
{
m_parameters->add((machine_int_t*)&m_multiclass_strategy,"m_multiclass_type");
m_parameters->add((CSGObject**)&m_machine, "m_machine");
m_parameters->add((CSGObject**)&m_rejection_strategy, "m_rejection_strategy");
m_parameters->add_vector((CSGObject***)&m_machines.vector,&m_machines.vlen, "m_machines");
}

CLabels* CMulticlassMachine::apply(CFeatures* features)
{
init_machines_for_apply(features);
Expand Down Expand Up @@ -166,6 +163,7 @@ CLabels* CMulticlassMachine::classify_one_vs_rest()
}
result->set_label(i, winner);
}
outputs_for_i.destroy_vector();

for (int32_t i=0; i<num_machines; i++)
SG_UNREF(outputs[i]);
Expand Down
25 changes: 11 additions & 14 deletions src/shogun/machine/multiclass/MulticlassMachine.h
Expand Up @@ -82,9 +82,6 @@ class CMulticlassMachine : public CMachine
return m_machines.vlen;
}

/** cleanup */
void cleanup();

/** classify all examples
*
* @return resulting labels
Expand All @@ -104,15 +101,6 @@ class CMulticlassMachine : public CMachine
*/
virtual float64_t apply(int32_t num);

/** classify one vs rest
*
* @return resulting labels
*/
virtual CLabels* classify_one_vs_rest();

/** train one vs rest */
bool train_one_vs_rest();

/** get the type of multiclass'ness
*
* @return multiclass type 1 vs one etc
Expand Down Expand Up @@ -141,6 +129,15 @@ class CMulticlassMachine : public CMachine

protected:

/** classify one vs rest
*
* @return resulting labels
*/
virtual CLabels* classify_one_vs_rest();

/** train one vs rest */
bool train_one_vs_rest();

/** train machine */
virtual bool train_machine(CFeatures* data = NULL);

Expand All @@ -161,8 +158,8 @@ class CMulticlassMachine : public CMachine

private:

/** init parameters */
void init();
/** register parameters */
void register_parameters();

protected:
/** type of multiclass strategy */
Expand Down

0 comments on commit ec86ec8

Please sign in to comment.