diff --git a/src/shogun/converter/Converter.h b/src/shogun/converter/Converter.h index 9a042d9dd95..61d42948aa0 100644 --- a/src/shogun/converter/Converter.h +++ b/src/shogun/converter/Converter.h @@ -37,7 +37,7 @@ class CConverter : public CTransformer * @param features features to convert * @return converted features */ - virtual CFeatures* apply(CFeatures* features) = 0; + virtual CFeatures* apply(CFeatures* features, bool inplace = true) = 0; }; } #endif /* CONVERTER_H_ */ diff --git a/src/shogun/converter/DiffusionMaps.cpp b/src/shogun/converter/DiffusionMaps.cpp index 5de87c20da6..885b1b4943a 100644 --- a/src/shogun/converter/DiffusionMaps.cpp +++ b/src/shogun/converter/DiffusionMaps.cpp @@ -58,7 +58,7 @@ const char* CDiffusionMaps::get_name() const return "DiffusionMaps"; }; -CFeatures* CDiffusionMaps::apply(CFeatures* features) +CFeatures* CDiffusionMaps::apply(CFeatures* features, bool inplace) { ASSERT(features) // shorthand for simplefeatures diff --git a/src/shogun/converter/DiffusionMaps.h b/src/shogun/converter/DiffusionMaps.h index aa6bac287dd..daec66828ac 100644 --- a/src/shogun/converter/DiffusionMaps.h +++ b/src/shogun/converter/DiffusionMaps.h @@ -45,7 +45,7 @@ class CDiffusionMaps: public CEmbeddingConverter /** apply preprocessor to features * @param features */ - virtual CFeatures* apply(CFeatures* features); + virtual CFeatures* apply(CFeatures* features, bool inplace = true); /** embed distance * @param distance to use for embedding diff --git a/src/shogun/converter/EmbeddingConverter.h b/src/shogun/converter/EmbeddingConverter.h index e669755c50b..08beb68e95d 100644 --- a/src/shogun/converter/EmbeddingConverter.h +++ b/src/shogun/converter/EmbeddingConverter.h @@ -40,7 +40,7 @@ class CEmbeddingConverter: public CConverter * @param features features to embed * @return embedding features */ - virtual CFeatures* apply(CFeatures* features) = 0; + virtual CFeatures* apply(CFeatures* features, bool inplace = true) = 0; /** embed given features, acts the same as apply, but returns * DenseFeatures diff --git a/src/shogun/converter/FactorAnalysis.cpp b/src/shogun/converter/FactorAnalysis.cpp index 5437f0bde5c..abf79e3105b 100644 --- a/src/shogun/converter/FactorAnalysis.cpp +++ b/src/shogun/converter/FactorAnalysis.cpp @@ -54,7 +54,7 @@ float64_t CFactorAnalysis::get_epsilon() const return m_epsilon; } -CFeatures* CFactorAnalysis::apply(CFeatures* features) +CFeatures* CFactorAnalysis::apply(CFeatures* features, bool inplace) { TAPKEE_PARAMETERS_FOR_SHOGUN parameters; parameters.max_iteration = m_max_iteration; diff --git a/src/shogun/converter/FactorAnalysis.h b/src/shogun/converter/FactorAnalysis.h index f299cb1a84e..354e888aefb 100644 --- a/src/shogun/converter/FactorAnalysis.h +++ b/src/shogun/converter/FactorAnalysis.h @@ -60,7 +60,7 @@ class CFactorAnalysis : public CEmbeddingConverter * * @param features features to embed */ - virtual CFeatures* apply(CFeatures* features); + virtual CFeatures* apply(CFeatures* features, bool inplace = true); /** setter for the maximum number of iterations * diff --git a/src/shogun/converter/HashedDocConverter.cpp b/src/shogun/converter/HashedDocConverter.cpp index 146475c859d..5c554f3993e 100644 --- a/src/shogun/converter/HashedDocConverter.cpp +++ b/src/shogun/converter/HashedDocConverter.cpp @@ -73,7 +73,7 @@ const char* CHashedDocConverter::get_name() const return "HashedDocConverter"; } -CFeatures* CHashedDocConverter::apply(CFeatures* features) +CFeatures* CHashedDocConverter::apply(CFeatures* features, bool inplace) { ASSERT(features); if (strcmp(features->get_name(), "StringFeatures")!=0) diff --git a/src/shogun/converter/HashedDocConverter.h b/src/shogun/converter/HashedDocConverter.h index c94eaa133ea..b8a41cad493 100644 --- a/src/shogun/converter/HashedDocConverter.h +++ b/src/shogun/converter/HashedDocConverter.h @@ -68,7 +68,7 @@ class CHashedDocConverter : public CConverter * @param features the strings to be hashed. Must be an instance of CStringFeatures. * @return a CSparseFeatures object containing the hashes of the strings. */ - virtual CFeatures* apply(CFeatures* features); + virtual CFeatures* apply(CFeatures* features, bool inplace = true); /** Hashes the tokens contained in document * diff --git a/src/shogun/converter/HessianLocallyLinearEmbedding.cpp b/src/shogun/converter/HessianLocallyLinearEmbedding.cpp index c31547a6ab2..746008ff9e2 100644 --- a/src/shogun/converter/HessianLocallyLinearEmbedding.cpp +++ b/src/shogun/converter/HessianLocallyLinearEmbedding.cpp @@ -25,7 +25,8 @@ const char* CHessianLocallyLinearEmbedding::get_name() const return "HessianLocallyLinearEmbedding"; }; -CFeatures* CHessianLocallyLinearEmbedding::apply(CFeatures* features) +CFeatures* +CHessianLocallyLinearEmbedding::apply(CFeatures* features, bool inplace) { CKernel* kernel = new CLinearKernel((CDotFeatures*)features,(CDotFeatures*)features); TAPKEE_PARAMETERS_FOR_SHOGUN parameters; diff --git a/src/shogun/converter/HessianLocallyLinearEmbedding.h b/src/shogun/converter/HessianLocallyLinearEmbedding.h index ffd54f2faac..94bae22ecd3 100644 --- a/src/shogun/converter/HessianLocallyLinearEmbedding.h +++ b/src/shogun/converter/HessianLocallyLinearEmbedding.h @@ -48,7 +48,7 @@ class CHessianLocallyLinearEmbedding: public CLocallyLinearEmbedding virtual const char* get_name() const; /** apply */ - virtual CFeatures* apply(CFeatures* features); + virtual CFeatures* apply(CFeatures* features, bool inplace = true); }; } diff --git a/src/shogun/converter/KernelLocallyLinearEmbedding.cpp b/src/shogun/converter/KernelLocallyLinearEmbedding.cpp index 7e77f9dda71..365c5caca39 100644 --- a/src/shogun/converter/KernelLocallyLinearEmbedding.cpp +++ b/src/shogun/converter/KernelLocallyLinearEmbedding.cpp @@ -31,7 +31,8 @@ CKernelLocallyLinearEmbedding::~CKernelLocallyLinearEmbedding() { } -CFeatures* CKernelLocallyLinearEmbedding::apply(CFeatures* features) +CFeatures* +CKernelLocallyLinearEmbedding::apply(CFeatures* features, bool inplace) { ASSERT(features) SG_REF(features); diff --git a/src/shogun/converter/KernelLocallyLinearEmbedding.h b/src/shogun/converter/KernelLocallyLinearEmbedding.h index 2bbba7f70b7..879b65ec395 100644 --- a/src/shogun/converter/KernelLocallyLinearEmbedding.h +++ b/src/shogun/converter/KernelLocallyLinearEmbedding.h @@ -52,7 +52,7 @@ class CKernelLocallyLinearEmbedding: public CLocallyLinearEmbedding virtual ~CKernelLocallyLinearEmbedding(); /** apply */ - virtual CFeatures* apply(CFeatures* features); + virtual CFeatures* apply(CFeatures* features, bool inplace = true); /** embed kernel (kernel should be inited) * @param kernel kernel to construct embed diff --git a/src/shogun/converter/LaplacianEigenmaps.cpp b/src/shogun/converter/LaplacianEigenmaps.cpp index de0f8c80983..643945f9ed3 100644 --- a/src/shogun/converter/LaplacianEigenmaps.cpp +++ b/src/shogun/converter/LaplacianEigenmaps.cpp @@ -57,7 +57,7 @@ const char* CLaplacianEigenmaps::get_name() const return "LaplacianEigenmaps"; }; -CFeatures* CLaplacianEigenmaps::apply(CFeatures* features) +CFeatures* CLaplacianEigenmaps::apply(CFeatures* features, bool inplace) { // shorthand for simplefeatures SG_REF(features); diff --git a/src/shogun/converter/LaplacianEigenmaps.h b/src/shogun/converter/LaplacianEigenmaps.h index 7aaecba4b0f..4f749d230fb 100644 --- a/src/shogun/converter/LaplacianEigenmaps.h +++ b/src/shogun/converter/LaplacianEigenmaps.h @@ -46,7 +46,7 @@ class CLaplacianEigenmaps: public CEmbeddingConverter * @param features to embed * @return embedded features */ - virtual CFeatures* apply(CFeatures* features); + virtual CFeatures* apply(CFeatures* features, bool inplace = true); /** embed distance * @param distance to use for embedding diff --git a/src/shogun/converter/LinearLocalTangentSpaceAlignment.cpp b/src/shogun/converter/LinearLocalTangentSpaceAlignment.cpp index 733679897b9..34763b5235a 100644 --- a/src/shogun/converter/LinearLocalTangentSpaceAlignment.cpp +++ b/src/shogun/converter/LinearLocalTangentSpaceAlignment.cpp @@ -26,7 +26,8 @@ const char* CLinearLocalTangentSpaceAlignment::get_name() const return "LinearLocalTangentSpaceAlignment"; } -CFeatures* CLinearLocalTangentSpaceAlignment::apply(CFeatures* features) +CFeatures* +CLinearLocalTangentSpaceAlignment::apply(CFeatures* features, bool inplace) { CKernel* kernel = new CLinearKernel((CDotFeatures*)features,(CDotFeatures*)features); TAPKEE_PARAMETERS_FOR_SHOGUN parameters; diff --git a/src/shogun/converter/LinearLocalTangentSpaceAlignment.h b/src/shogun/converter/LinearLocalTangentSpaceAlignment.h index 764a178ce44..06b895c8447 100644 --- a/src/shogun/converter/LinearLocalTangentSpaceAlignment.h +++ b/src/shogun/converter/LinearLocalTangentSpaceAlignment.h @@ -49,8 +49,7 @@ class CLinearLocalTangentSpaceAlignment: public CLocalTangentSpaceAlignment virtual const char* get_name() const; /** apply */ - virtual CFeatures* apply(CFeatures* features); - + virtual CFeatures* apply(CFeatures* features, bool inplace = true); }; } diff --git a/src/shogun/converter/LocalTangentSpaceAlignment.cpp b/src/shogun/converter/LocalTangentSpaceAlignment.cpp index 9133efb011a..a02a4c09106 100644 --- a/src/shogun/converter/LocalTangentSpaceAlignment.cpp +++ b/src/shogun/converter/LocalTangentSpaceAlignment.cpp @@ -26,7 +26,7 @@ const char* CLocalTangentSpaceAlignment::get_name() const return "LocalTangentSpaceAlignment"; }; -CFeatures* CLocalTangentSpaceAlignment::apply(CFeatures* features) +CFeatures* CLocalTangentSpaceAlignment::apply(CFeatures* features, bool inplace) { CKernel* kernel = new CLinearKernel((CDotFeatures*)features,(CDotFeatures*)features); TAPKEE_PARAMETERS_FOR_SHOGUN parameters; diff --git a/src/shogun/converter/LocalTangentSpaceAlignment.h b/src/shogun/converter/LocalTangentSpaceAlignment.h index 25ba099c7d7..89a4a58a919 100644 --- a/src/shogun/converter/LocalTangentSpaceAlignment.h +++ b/src/shogun/converter/LocalTangentSpaceAlignment.h @@ -47,8 +47,7 @@ class CLocalTangentSpaceAlignment: public CLocallyLinearEmbedding virtual const char* get_name() const; /** apply */ - virtual CFeatures* apply(CFeatures* features); - + virtual CFeatures* apply(CFeatures* features, bool inplace = true); }; } diff --git a/src/shogun/converter/LocalityPreservingProjections.cpp b/src/shogun/converter/LocalityPreservingProjections.cpp index 9771db7e400..156cab85455 100644 --- a/src/shogun/converter/LocalityPreservingProjections.cpp +++ b/src/shogun/converter/LocalityPreservingProjections.cpp @@ -26,7 +26,8 @@ const char* CLocalityPreservingProjections::get_name() const return "LocalityPreservingProjections"; }; -CFeatures* CLocalityPreservingProjections::apply(CFeatures* features) +CFeatures* +CLocalityPreservingProjections::apply(CFeatures* features, bool inplace) { TAPKEE_PARAMETERS_FOR_SHOGUN parameters; m_distance->init(features,features); diff --git a/src/shogun/converter/LocalityPreservingProjections.h b/src/shogun/converter/LocalityPreservingProjections.h index 1319c087a7a..5c8d494dddc 100644 --- a/src/shogun/converter/LocalityPreservingProjections.h +++ b/src/shogun/converter/LocalityPreservingProjections.h @@ -44,8 +44,7 @@ class CLocalityPreservingProjections: public CLaplacianEigenmaps virtual const char* get_name() const; /** apply */ - virtual CFeatures* apply(CFeatures* features); - + virtual CFeatures* apply(CFeatures* features, bool inplace = true); }; } diff --git a/src/shogun/converter/LocallyLinearEmbedding.cpp b/src/shogun/converter/LocallyLinearEmbedding.cpp index 08482fcc77d..3ac8e9b05a4 100644 --- a/src/shogun/converter/LocallyLinearEmbedding.cpp +++ b/src/shogun/converter/LocallyLinearEmbedding.cpp @@ -74,7 +74,7 @@ const char* CLocallyLinearEmbedding::get_name() const return "LocallyLinearEmbedding"; } -CFeatures* CLocallyLinearEmbedding::apply(CFeatures* features) +CFeatures* CLocallyLinearEmbedding::apply(CFeatures* features, bool inplace) { // oh my let me dirty cast it CKernel* kernel = new CLinearKernel((CDotFeatures*)features,(CDotFeatures*)features); diff --git a/src/shogun/converter/LocallyLinearEmbedding.h b/src/shogun/converter/LocallyLinearEmbedding.h index a585ef6bafd..7640a3161ff 100644 --- a/src/shogun/converter/LocallyLinearEmbedding.h +++ b/src/shogun/converter/LocallyLinearEmbedding.h @@ -52,7 +52,7 @@ class CLocallyLinearEmbedding: public CEmbeddingConverter /** apply preprocessor to features * @param features */ - virtual CFeatures* apply(CFeatures* features); + virtual CFeatures* apply(CFeatures* features, bool inplace = true); /** setter for k parameter * @param k k value diff --git a/src/shogun/converter/ManifoldSculpting.cpp b/src/shogun/converter/ManifoldSculpting.cpp index 24378af0269..a75098208b0 100644 --- a/src/shogun/converter/ManifoldSculpting.cpp +++ b/src/shogun/converter/ManifoldSculpting.cpp @@ -72,7 +72,7 @@ int32_t CManifoldSculpting::get_max_iteration() const return m_max_iteration; } -CFeatures* CManifoldSculpting::apply(CFeatures* features) +CFeatures* CManifoldSculpting::apply(CFeatures* features, bool inplace) { CDenseFeatures* feats = (CDenseFeatures*)features; SG_REF(feats); diff --git a/src/shogun/converter/ManifoldSculpting.h b/src/shogun/converter/ManifoldSculpting.h index ec13b6bfe8f..9ecb09a32ba 100644 --- a/src/shogun/converter/ManifoldSculpting.h +++ b/src/shogun/converter/ManifoldSculpting.h @@ -37,7 +37,7 @@ class CManifoldSculpting : public CEmbeddingConverter * * @param features features to embed */ - virtual CFeatures* apply(CFeatures* features); + virtual CFeatures* apply(CFeatures* features, bool inplace = true); /** setter for the k * diff --git a/src/shogun/converter/MultidimensionalScaling.cpp b/src/shogun/converter/MultidimensionalScaling.cpp index 183c31c8d71..8bc98ad16e8 100644 --- a/src/shogun/converter/MultidimensionalScaling.cpp +++ b/src/shogun/converter/MultidimensionalScaling.cpp @@ -96,7 +96,7 @@ CDenseFeatures* CMultidimensionalScaling::embed_distance(CDistance* d return embedding; } -CFeatures* CMultidimensionalScaling::apply(CFeatures* features) +CFeatures* CMultidimensionalScaling::apply(CFeatures* features, bool inplace) { SG_REF(features); ASSERT(m_distance) diff --git a/src/shogun/converter/MultidimensionalScaling.h b/src/shogun/converter/MultidimensionalScaling.h index bc865b19224..81d13dc1122 100644 --- a/src/shogun/converter/MultidimensionalScaling.h +++ b/src/shogun/converter/MultidimensionalScaling.h @@ -75,7 +75,7 @@ class CMultidimensionalScaling: public CEmbeddingConverter * @param features features which feature matrix should be processed * @return new feature matrix */ - virtual CFeatures* apply(CFeatures* features); + virtual CFeatures* apply(CFeatures* features, bool inplace = true); /** get name */ const char* get_name() const; diff --git a/src/shogun/converter/NeighborhoodPreservingEmbedding.cpp b/src/shogun/converter/NeighborhoodPreservingEmbedding.cpp index 4968dc8891c..0bf46e3a851 100644 --- a/src/shogun/converter/NeighborhoodPreservingEmbedding.cpp +++ b/src/shogun/converter/NeighborhoodPreservingEmbedding.cpp @@ -27,7 +27,8 @@ const char* CNeighborhoodPreservingEmbedding::get_name() const return "NeighborhoodPreservingEmbedding"; } -CFeatures* CNeighborhoodPreservingEmbedding::apply(CFeatures* features) +CFeatures* +CNeighborhoodPreservingEmbedding::apply(CFeatures* features, bool inplace) { CKernel* kernel = new CLinearKernel((CDotFeatures*)features,(CDotFeatures*)features); TAPKEE_PARAMETERS_FOR_SHOGUN parameters; diff --git a/src/shogun/converter/NeighborhoodPreservingEmbedding.h b/src/shogun/converter/NeighborhoodPreservingEmbedding.h index c6bd04cdb7e..e02b610ddbd 100644 --- a/src/shogun/converter/NeighborhoodPreservingEmbedding.h +++ b/src/shogun/converter/NeighborhoodPreservingEmbedding.h @@ -49,8 +49,7 @@ class CNeighborhoodPreservingEmbedding: public CLocallyLinearEmbedding virtual const char* get_name() const; /** apply */ - virtual CFeatures* apply(CFeatures* features); - + virtual CFeatures* apply(CFeatures* features, bool inplace = true); }; } diff --git a/src/shogun/converter/StochasticProximityEmbedding.cpp b/src/shogun/converter/StochasticProximityEmbedding.cpp index ed0c196e465..7592f2f640f 100644 --- a/src/shogun/converter/StochasticProximityEmbedding.cpp +++ b/src/shogun/converter/StochasticProximityEmbedding.cpp @@ -105,7 +105,8 @@ const char * CStochasticProximityEmbedding::get_name() const return "StochasticProximityEmbedding"; } -CFeatures* CStochasticProximityEmbedding::apply(CFeatures* features) +CFeatures* +CStochasticProximityEmbedding::apply(CFeatures* features, bool inplace) { if ( !features ) SG_ERROR("Features are required to apply SPE\n") diff --git a/src/shogun/converter/StochasticProximityEmbedding.h b/src/shogun/converter/StochasticProximityEmbedding.h index b7faab6d6e1..e94e4e0d186 100644 --- a/src/shogun/converter/StochasticProximityEmbedding.h +++ b/src/shogun/converter/StochasticProximityEmbedding.h @@ -72,7 +72,7 @@ class CStochasticProximityEmbedding : public CEmbeddingConverter * @param features features to embed * @return embedding features */ - virtual CFeatures* apply(CFeatures* features); + virtual CFeatures* apply(CFeatures* features, bool inplace = true); /** setter for number of neighbors k in local strategy * diff --git a/src/shogun/converter/TDistributedStochasticNeighborEmbedding.cpp b/src/shogun/converter/TDistributedStochasticNeighborEmbedding.cpp index 66919f4ccae..ad978462daa 100644 --- a/src/shogun/converter/TDistributedStochasticNeighborEmbedding.cpp +++ b/src/shogun/converter/TDistributedStochasticNeighborEmbedding.cpp @@ -55,7 +55,8 @@ float64_t CTDistributedStochasticNeighborEmbedding::get_perplexity() const return m_perplexity; } -CFeatures* CTDistributedStochasticNeighborEmbedding::apply(CFeatures* features) +CFeatures* CTDistributedStochasticNeighborEmbedding::apply( + CFeatures* features, bool inplace) { TAPKEE_PARAMETERS_FOR_SHOGUN parameters; parameters.sne_theta = m_theta; diff --git a/src/shogun/converter/TDistributedStochasticNeighborEmbedding.h b/src/shogun/converter/TDistributedStochasticNeighborEmbedding.h index 63425c1b243..54fc1be4793 100644 --- a/src/shogun/converter/TDistributedStochasticNeighborEmbedding.h +++ b/src/shogun/converter/TDistributedStochasticNeighborEmbedding.h @@ -38,7 +38,7 @@ class CTDistributedStochasticNeighborEmbedding : public CEmbeddingConverter * * @param features features to embed */ - virtual CFeatures* apply(CFeatures* features); + virtual CFeatures* apply(CFeatures* features, bool inplace = true); /** setter for the learning rate * diff --git a/src/shogun/converter/ica/FFSep.cpp b/src/shogun/converter/ica/FFSep.cpp index 737bd2cfd68..cfe207abec2 100644 --- a/src/shogun/converter/ica/FFSep.cpp +++ b/src/shogun/converter/ica/FFSep.cpp @@ -52,7 +52,7 @@ SGNDArray CFFSep::get_covs() const return m_covs; } -CFeatures* CFFSep::apply(CFeatures* features) +CFeatures* CFFSep::apply(CFeatures* features, bool inplace) { ASSERT(features); SG_REF(features); diff --git a/src/shogun/converter/ica/FFSep.h b/src/shogun/converter/ica/FFSep.h index b3218ce1771..97a5069e2b8 100644 --- a/src/shogun/converter/ica/FFSep.h +++ b/src/shogun/converter/ica/FFSep.h @@ -42,7 +42,7 @@ class CFFSep: public CICAConverter /** apply to features * @param features features to embed */ - virtual CFeatures* apply(CFeatures* features); + virtual CFeatures* apply(CFeatures* features, bool inplace = true); /** getter for tau parameter * @return tau vector diff --git a/src/shogun/converter/ica/FastICA.cpp b/src/shogun/converter/ica/FastICA.cpp index e962f1c8f98..bb9d463bfaa 100644 --- a/src/shogun/converter/ica/FastICA.cpp +++ b/src/shogun/converter/ica/FastICA.cpp @@ -66,7 +66,7 @@ bool CFastICA::get_whiten() const return whiten; } -CFeatures* CFastICA::apply(CFeatures* features) +CFeatures* CFastICA::apply(CFeatures* features, bool inplace) { ASSERT(features); SG_REF(features); diff --git a/src/shogun/converter/ica/FastICA.h b/src/shogun/converter/ica/FastICA.h index 5f1620ea510..982438baf53 100644 --- a/src/shogun/converter/ica/FastICA.h +++ b/src/shogun/converter/ica/FastICA.h @@ -38,7 +38,7 @@ class CFastICA: public CICAConverter /** apply to features * @param features features to embed */ - virtual CFeatures* apply(CFeatures* features); + virtual CFeatures* apply(CFeatures* features, bool inplace = true); /** setter for whiten flag * whether to whiten the data or not diff --git a/src/shogun/converter/ica/ICAConverter.h b/src/shogun/converter/ica/ICAConverter.h index f0df6901ea1..3d51cd4ec0d 100644 --- a/src/shogun/converter/ica/ICAConverter.h +++ b/src/shogun/converter/ica/ICAConverter.h @@ -33,7 +33,7 @@ class CICAConverter: public CConverter /** apply to features * @param features features to embed */ - virtual CFeatures* apply(CFeatures* features) = 0; + virtual CFeatures* apply(CFeatures* features, bool inplace = true) = 0; /** setter for mixing matrix, if the mixing matrix is set it will be * used as an initial guess if supported by the algorithm diff --git a/src/shogun/converter/ica/Jade.cpp b/src/shogun/converter/ica/Jade.cpp index 75fce0020ba..7e839e770ea 100644 --- a/src/shogun/converter/ica/Jade.cpp +++ b/src/shogun/converter/ica/Jade.cpp @@ -40,7 +40,7 @@ SGMatrix CJade::get_cumulant_matrix() const return m_cumulant_matrix; } -CFeatures* CJade::apply(CFeatures* features) +CFeatures* CJade::apply(CFeatures* features, bool inplace) { ASSERT(features); SG_REF(features); diff --git a/src/shogun/converter/ica/Jade.h b/src/shogun/converter/ica/Jade.h index cbdfcec593e..4d7f90089a5 100644 --- a/src/shogun/converter/ica/Jade.h +++ b/src/shogun/converter/ica/Jade.h @@ -43,7 +43,7 @@ class CJade: public CICAConverter /** apply to features * @param features features to embed */ - virtual CFeatures* apply(CFeatures* features); + virtual CFeatures* apply(CFeatures* features, bool inplace = true); /** getter for cumulant_matrix * @return cumulant_matrix diff --git a/src/shogun/converter/ica/JediSep.cpp b/src/shogun/converter/ica/JediSep.cpp index 312621dbcd0..e05e2602ebe 100644 --- a/src/shogun/converter/ica/JediSep.cpp +++ b/src/shogun/converter/ica/JediSep.cpp @@ -52,7 +52,7 @@ SGNDArray CJediSep::get_covs() const return m_covs; } -CFeatures* CJediSep::apply(CFeatures* features) +CFeatures* CJediSep::apply(CFeatures* features, bool inplace) { REQUIRE(features, "features is null"); SG_REF(features); diff --git a/src/shogun/converter/ica/JediSep.h b/src/shogun/converter/ica/JediSep.h index 6d8a6cc1331..68f24299a06 100644 --- a/src/shogun/converter/ica/JediSep.h +++ b/src/shogun/converter/ica/JediSep.h @@ -41,7 +41,7 @@ class CJediSep: public CICAConverter /** apply to features * @param features features to embed */ - virtual CFeatures* apply(CFeatures* features); + virtual CFeatures* apply(CFeatures* features, bool inplace = true); /** getter for tau parameter * @return tau vector diff --git a/src/shogun/converter/ica/SOBI.cpp b/src/shogun/converter/ica/SOBI.cpp index 9bff3cf5080..f326bad1499 100644 --- a/src/shogun/converter/ica/SOBI.cpp +++ b/src/shogun/converter/ica/SOBI.cpp @@ -52,7 +52,7 @@ SGNDArray CSOBI::get_covs() const return m_covs; } -CFeatures* CSOBI::apply(CFeatures* features) +CFeatures* CSOBI::apply(CFeatures* features, bool inplace) { ASSERT(features); SG_REF(features); diff --git a/src/shogun/converter/ica/SOBI.h b/src/shogun/converter/ica/SOBI.h index 4a4dd9475de..3af0663765e 100644 --- a/src/shogun/converter/ica/SOBI.h +++ b/src/shogun/converter/ica/SOBI.h @@ -43,7 +43,7 @@ class CSOBI: public CICAConverter /** apply to features * @param features features to embed */ - virtual CFeatures* apply(CFeatures* features); + virtual CFeatures* apply(CFeatures* features, bool inplace = true); /** getter for tau parameter * @return tau vector diff --git a/src/shogun/converter/ica/UWedgeSep.cpp b/src/shogun/converter/ica/UWedgeSep.cpp index 1bc06ea0418..3445e0c4aa4 100644 --- a/src/shogun/converter/ica/UWedgeSep.cpp +++ b/src/shogun/converter/ica/UWedgeSep.cpp @@ -52,7 +52,7 @@ SGNDArray CUWedgeSep::get_covs() const return m_covs; } -CFeatures* CUWedgeSep::apply(CFeatures* features) +CFeatures* CUWedgeSep::apply(CFeatures* features, bool inplace) { REQUIRE(features, "features is null"); SG_REF(features); diff --git a/src/shogun/converter/ica/UWedgeSep.h b/src/shogun/converter/ica/UWedgeSep.h index 2c09a8ecc99..b3880e285f9 100644 --- a/src/shogun/converter/ica/UWedgeSep.h +++ b/src/shogun/converter/ica/UWedgeSep.h @@ -41,7 +41,7 @@ class CUWedgeSep: public CICAConverter /** apply to features * @param features features to embed */ - virtual CFeatures* apply(CFeatures* features); + virtual CFeatures* apply(CFeatures* features, bool inplace = true); /** getter for tau parameter * @return tau vector diff --git a/src/shogun/preprocessor/DensePreprocessor.cpp b/src/shogun/preprocessor/DensePreprocessor.cpp index 550e3d49a23..f8c9831d687 100644 --- a/src/shogun/preprocessor/DensePreprocessor.cpp +++ b/src/shogun/preprocessor/DensePreprocessor.cpp @@ -86,7 +86,7 @@ EPreprocessorType CDensePreprocessor::get_type() const } template -CFeatures* CDensePreprocessor::apply(CFeatures* features) +CFeatures* CDensePreprocessor::apply(CFeatures* features, bool inplace) { REQUIRE(features->get_feature_class()==C_DENSE, "Provided features (%d) " "has to be of C_DENSE (%d) class!\n", diff --git a/src/shogun/preprocessor/DensePreprocessor.h b/src/shogun/preprocessor/DensePreprocessor.h index 5ac7f0d7d58..689501e814a 100644 --- a/src/shogun/preprocessor/DensePreprocessor.h +++ b/src/shogun/preprocessor/DensePreprocessor.h @@ -39,7 +39,7 @@ template class CDensePreprocessor : public CPreprocessor * @param features the dense input features * @return the result feature object after applying the preprocessor */ - virtual CFeatures* apply(CFeatures* features); + virtual CFeatures* apply(CFeatures* features, bool inplace = true); /// apply preproc on feature matrix /// result in feature matrix diff --git a/src/shogun/preprocessor/FeatureSelection.cpp b/src/shogun/preprocessor/FeatureSelection.cpp index be96bfcb7ca..aa54e9b7163 100644 --- a/src/shogun/preprocessor/FeatureSelection.cpp +++ b/src/shogun/preprocessor/FeatureSelection.cpp @@ -170,7 +170,7 @@ CFeatures* CFeatureSelection::apply_backward_elimination(CFeatures* features } template -CFeatures* CFeatureSelection::apply(CFeatures* features) +CFeatures* CFeatureSelection::apply(CFeatures* features, bool inplace) { SG_DEBUG("Entering!\n"); diff --git a/src/shogun/preprocessor/FeatureSelection.h b/src/shogun/preprocessor/FeatureSelection.h index b0cd9e58dd3..ca6049fec8d 100644 --- a/src/shogun/preprocessor/FeatureSelection.h +++ b/src/shogun/preprocessor/FeatureSelection.h @@ -152,7 +152,7 @@ template class CFeatureSelection : public CPreprocessor * @param features the input features * @return the result feature object after applying the preprocessor */ - virtual CFeatures* apply(CFeatures* features); + virtual CFeatures* apply(CFeatures* features, bool inplace = true); /** * Abstract method that is defined in the subclasses to compute the diff --git a/src/shogun/preprocessor/Preprocessor.h b/src/shogun/preprocessor/Preprocessor.h index 937ae865b3e..79958f203f4 100644 --- a/src/shogun/preprocessor/Preprocessor.h +++ b/src/shogun/preprocessor/Preprocessor.h @@ -85,7 +85,7 @@ class CPreprocessor : public CTransformer * @param features the input features * @return the result feature object after applying the preprocessor */ - virtual CFeatures* apply(CFeatures* features)=0; + virtual CFeatures* apply(CFeatures* features, bool inplace) = 0; /** clean-up. should be called (if necessary) after processing */ virtual void cleanup()=0; diff --git a/src/shogun/preprocessor/StringPreprocessor.h b/src/shogun/preprocessor/StringPreprocessor.h index 3490c526a12..14d47689c05 100644 --- a/src/shogun/preprocessor/StringPreprocessor.h +++ b/src/shogun/preprocessor/StringPreprocessor.h @@ -38,7 +38,7 @@ template class CStringPreprocessor : public CPreprocessor * @param features the string input features * @return the result feature object after applying the preprocessor */ - virtual CFeatures* apply(CFeatures* features); + virtual CFeatures* apply(CFeatures* features, bool inplace = true); /// apply preproc on feature matrix /// result in feature matrix @@ -127,7 +127,7 @@ template<> inline EFeatureType CStringPreprocessor::get_feature_type } template -CFeatures* CStringPreprocessor::apply(CFeatures* features) +CFeatures* CStringPreprocessor::apply(CFeatures* features, bool inplace) { REQUIRE(features->get_feature_class()==C_STRING, "Provided features (%d) " "has to be of C_STRING (%d) class!\n", diff --git a/src/shogun/transformer/Transformer.h b/src/shogun/transformer/Transformer.h index 72ce253c311..c62b2d3cb6f 100644 --- a/src/shogun/transformer/Transformer.h +++ b/src/shogun/transformer/Transformer.h @@ -48,6 +48,14 @@ namespace shogun { SG_SNOTIMPLEMENTED; } + + /** Apply transform to features. If transform is performed in place, + * underlying data of input features will be reused if possible. + * @param features features to transform + * @param inplace whether transform in place + * @return the result feature object after applying the transformer + * */ + virtual CFeatures* apply(CFeatures* features, bool inplace = true) = 0; }; } #endif /* TRANSFORMER_H_ */