Skip to content

Instantly share code, notes, and snippets.

@MikeLing
Created July 9, 2017 15:22
Show Gist options
  • Save MikeLing/9949903d8d5fff279de519c3f1a1b56a to your computer and use it in GitHub Desktop.
Save MikeLing/9949903d8d5fff279de519c3f1a1b56a to your computer and use it in GitHub Desktop.
#include <shogun/base/init.h>
#include <shogun/base/some.h>
#include <shogun/labels/MulticlassLabels.h>
#include <shogun/lib/SGVector.h>
#include <shogun/io/SerializableAsciiFile.h>
#include <shogun/multiclass/ecoc/ECOCHDDecoder.h>
#include <shogun/features/DenseFeatures.h>
#include <shogun/multiclass/ecoc/ECOCStrategy.h>
#include <shogun/multiclass/ecoc/ECOCRandomDenseEncoder.h>
#include <shogun/machine/LinearMulticlassMachine.h>
#include <shogun/evaluation/MulticlassAccuracy.h>
#include <shogun/lib/WrappedObjectArray.h>
#include <shogun/classifier/svm/LibLinear.h>
using namespace shogun;
int main(int, char*[])
{
init_shogun_with_defaults();
//![create_features]
auto features_train = some<CDenseFeatures<float64_t>>(f_feats_train);
auto features_test = some<CDenseFeatures<float64_t>>(f_feats_test);
auto labels_train = some<CMulticlassLabels>(f_labels_train);
auto labels_test = some<CMulticlassLabels>(f_labels_test);
//![create_features]
//![create_classifier]
auto classifier = some<CLibLinear>();
//![create_classifier]
//![choose_strategy]
auto encoder = some<CECOCRandomDenseEncoder>();
auto decoder = some<CECOCHDDecoder>();
auto rnd_dense_strategy = some<CECOCStrategy>(encoder, decoder);
//![choose_strategy]
//![create_instance]
auto mc_classifier = some<CLinearMulticlassMachine>(rnd_dense_strategy, features_train, classifier, labels_train);
//![create_instance]
//![train_and_apply]
mc_classifier->train();
auto labels_predict = mc_classifier->apply_multiclass(features_test);
//![train_and_apply]
//![evaluate_accuracy]
auto eval = some<CMulticlassAccuracy>();
auto accuracy = eval->evaluate(labels_predict, labels_test);
//![evaluate_accuracy]
// integration testing variables
auto output = labels_predict->get_labels();
// Serialize output for integration testing (automatically generated)
auto __sg_storage = some<CWrappedObjectArray>();
auto __sg_storage_file = some<CSerializableAsciiFile>("multiclass_ecoc_random.dat", 'w');
__sg_storage->append_wrapped_real(accuracy, "accuracy");
__sg_storage->append_wrapped_real_vector(output, "output");
__sg_storage->save_serializable(__sg_storage_file);
exit_shogun();
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment