GUIConverter.cpp

Go to the documentation of this file.
00001 /*
00002  * This program is free software; you can redistribute it and/or modify
00003  * it under the terms of the GNU General Public License as published by
00004  * the Free Software Foundation; either version 3 of the License, or
00005  * (at your option) any later version.
00006  *
00007  * Written (W) 2012 Sergey Lisitsyn
00008  * Copyright (C) 2012 Sergey Lisitsyn
00009  */
00010 
00011 #include <shogun/ui/GUIConverter.h>
00012 #include <shogun/ui/SGInterface.h>
00013 
00014 #include <shogun/lib/config.h>
00015 #include <shogun/io/SGIO.h>
00016 #include <shogun/features/DenseFeatures.h>
00017 #include <shogun/kernel/GaussianKernel.h>
00018 
00019 #include <shogun/converter/LocallyLinearEmbedding.h>
00020 #include <shogun/converter/HessianLocallyLinearEmbedding.h>
00021 #include <shogun/converter/LocalTangentSpaceAlignment.h>
00022 #include <shogun/converter/NeighborhoodPreservingEmbedding.h>
00023 #include <shogun/converter/LaplacianEigenmaps.h>
00024 #include <shogun/converter/LocalityPreservingProjections.h>
00025 #include <shogun/converter/DiffusionMaps.h>
00026 #include <shogun/converter/LinearLocalTangentSpaceAlignment.h>
00027 #include <shogun/converter/MultidimensionalScaling.h>
00028 #include <shogun/converter/Isomap.h>
00029 #include <shogun/converter/EmbeddingConverter.h>
00030 
00031 using namespace shogun;
00032 
00033 CGUIConverter::CGUIConverter(CSGInterface* ui)
00034 : CSGObject(), m_ui(ui)
00035 {
00036     m_converter = NULL;
00037 }
00038 
00039 CGUIConverter::~CGUIConverter()
00040 {
00041     SG_UNREF(m_converter);
00042 }
00043 
00044 bool CGUIConverter::create_locallylinearembedding(int32_t k)
00045 {
00046 #ifdef HAVE_LAPACK
00047     m_converter = new CLocallyLinearEmbedding();
00048     ((CLocallyLinearEmbedding*)m_converter)->set_k(k);
00049 #else
00050     SG_ERROR("Requires Lapack to be enabled at compile time\n");
00051 #endif
00052     return true;
00053 }
00054 
00055 bool CGUIConverter::create_neighborhoodpreservingembedding(int32_t k)
00056 {
00057 #ifdef HAVE_LAPACK
00058     m_converter = new CNeighborhoodPreservingEmbedding();
00059     ((CNeighborhoodPreservingEmbedding*)m_converter)->set_k(k);
00060 #else
00061     SG_ERROR("Requires Lapack to be enabled at compile time\n");
00062 #endif
00063     return true;
00064 }
00065 
00066 bool CGUIConverter::create_localtangentspacealignment(int32_t k)
00067 {
00068 #ifdef HAVE_LAPACK
00069     m_converter = new CLocalTangentSpaceAlignment();
00070     ((CLocalTangentSpaceAlignment*)m_converter)->set_k(k);
00071 #else
00072     SG_ERROR("Requires Lapack to be enabled at compile time\n");
00073 #endif
00074     return true;
00075 }
00076 
00077 bool CGUIConverter::create_linearlocaltangentspacealignment(int32_t k)
00078 {
00079 #ifdef HAVE_LAPACK
00080     m_converter = new CLinearLocalTangentSpaceAlignment();
00081     ((CLinearLocalTangentSpaceAlignment*)m_converter)->set_k(k);
00082 #else
00083     SG_ERROR("Requires Lapack to be enabled at compile time\n");
00084 #endif
00085     return true;
00086 }
00087 
00088 bool CGUIConverter::create_hessianlocallylinearembedding(int32_t k)
00089 {
00090 #ifdef HAVE_LAPACK
00091     m_converter = new CLocallyLinearEmbedding();
00092     ((CHessianLocallyLinearEmbedding*)m_converter)->set_k(k);
00093 #else
00094     SG_ERROR("Requires Lapack to be enabled at compile time\n");
00095 #endif
00096     return true;
00097 }
00098 
00099 bool CGUIConverter::create_laplacianeigenmaps(int32_t k, float64_t width)
00100 {
00101 #ifdef HAVE_LAPACK
00102     m_converter = new CLaplacianEigenmaps();
00103     ((CLaplacianEigenmaps*)m_converter)->set_k(k);
00104     ((CLaplacianEigenmaps*)m_converter)->set_tau(width);
00105 #else
00106     SG_ERROR("Requires Lapack to be enabled at compile time\n");
00107 #endif
00108     return true;
00109 }
00110 
00111 bool CGUIConverter::create_localitypreservingprojections(int32_t k, float64_t width)
00112 {
00113 #ifdef HAVE_LAPACK
00114     m_converter = new CLocalityPreservingProjections();
00115     ((CLocalityPreservingProjections*)m_converter)->set_k(k);
00116     ((CLocalityPreservingProjections*)m_converter)->set_tau(width);
00117 #else
00118     SG_ERROR("Requires Lapack to be enabled at compile time\n");
00119 #endif
00120     return true;
00121 }
00122 
00123 bool CGUIConverter::create_diffusionmaps(int32_t t, float64_t width)
00124 {
00125 #ifdef HAVE_LAPACK
00126     m_converter = new CDiffusionMaps();
00127     ((CDiffusionMaps*)m_converter)->set_t(t);
00128     ((CDiffusionMaps*)m_converter)->set_kernel(new CGaussianKernel(100,width));
00129 #else
00130     SG_ERROR("Requires Lapack to be enabled at compile time\n");
00131 #endif
00132     return true;
00133 }
00134 
00135 bool CGUIConverter::create_isomap(int32_t k)
00136 {
00137 #ifdef HAVE_LAPACK
00138     m_converter = new CIsomap();
00139     ((CIsomap*)m_converter)->set_k(k);
00140 #else
00141     SG_ERROR("Requires Lapack to be enabled at compile time\n");
00142 #endif
00143     return true;
00144 }
00145 
00146 bool CGUIConverter::create_multidimensionalscaling()
00147 {
00148 #ifdef HAVE_LAPACK
00149     m_converter = new CMultidimensionalScaling();
00150 #else
00151     SG_ERROR("Requires Lapack to be enabled at compile time\n");
00152 #endif
00153     return true;
00154 }
00155 
00156 CDenseFeatures<float64_t>* CGUIConverter::embed(int32_t target_dim)
00157 {
00158     if (!m_converter)
00159         SG_ERROR("No converter created");
00160     ((CEmbeddingConverter*)m_converter)->set_target_dim(target_dim);
00161     return ((CEmbeddingConverter*)m_converter)->embed(m_ui->ui_features->get_train_features());
00162 }
00163 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

SHOGUN Machine Learning Toolbox - Documentation