Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef LOCALLYLINEAREMBEDDING_H_
00012 #define LOCALLYLINEAREMBEDDING_H_
00013 #include <shogun/lib/config.h>
00014 #ifdef HAVE_LAPACK
00015 #include <shogun/converter/EmbeddingConverter.h>
00016 #include <shogun/features/Features.h>
00017 #include <shogun/features/DenseFeatures.h>
00018 #include <shogun/distance/Distance.h>
00019
00020 namespace shogun
00021 {
00022
00023 class CFeatures;
00024 class CDistance;
00025
00067 class CLocallyLinearEmbedding: public CEmbeddingConverter
00068 {
00069 public:
00070
00072 CLocallyLinearEmbedding();
00073
00075 virtual ~CLocallyLinearEmbedding();
00076
00080 virtual CFeatures* apply(CFeatures* features);
00081
00085 void set_k(int32_t k);
00086
00090 int32_t get_k() const;
00091
00095 void set_max_k(int32_t max_k);
00096
00100 int32_t get_max_k() const;
00101
00105 void set_auto_k(bool auto_k);
00106
00110 bool get_auto_k() const;
00111
00115 void set_reconstruction_shift(float64_t reconstruction_shift);
00116
00120 float64_t get_reconstruction_shift() const;
00121
00125 void set_nullspace_shift(float64_t nullspace_shift);
00126
00130 float64_t get_nullspace_shift() const;
00131
00135 void set_use_arpack(bool use_arpack);
00136
00140 bool get_use_arpack() const;
00141
00143 virtual const char* get_name() const;
00144
00146 protected:
00147
00149 void init();
00150
00156 virtual SGMatrix<float64_t> construct_weight_matrix(CDenseFeatures<float64_t>* simple_features,float64_t* W_matrix,
00157 SGMatrix<int32_t> neighborhood_matrix);
00158
00164 virtual SGMatrix<float64_t> construct_embedding(SGMatrix<float64_t> matrix,int dimension);
00165
00171 virtual SGMatrix<int32_t> get_neighborhood_matrix(SGMatrix<float64_t> distance_matrix, int32_t k);
00172
00178 int32_t estimate_k(CDenseFeatures<float64_t>* simple_features, SGMatrix<int32_t> neighborhood_matrix);
00179
00192 float64_t compute_reconstruction_error(int32_t k, int dim, int N, float64_t* feature_matrix,
00193 float64_t* z_matrix, float64_t* covariance_matrix,
00194 float64_t* resid_vector, float64_t* id_vector,
00195 SGMatrix<int32_t> neighborhood_matrix);
00196
00198 protected:
00199
00201 int32_t m_k;
00202
00204 int32_t m_max_k;
00205
00207 float64_t m_reconstruction_shift;
00208
00210 float64_t m_nullspace_shift;
00211
00213 bool m_use_arpack;
00214
00216 bool m_auto_k;
00217
00219 protected:
00220
00224 static void* run_linearreconstruction_thread(void* p);
00225
00226 };
00227 }
00228
00229 #endif
00230 #endif