From a89cd24a6de01c42d71632ef47b72fd1f581d980 Mon Sep 17 00:00:00 2001 From: Parijat Mazumdar Date: Tue, 18 Feb 2014 21:35:07 +0530 Subject: [PATCH] PCA unit test added --- src/shogun/preprocessor/PCA.cpp | 3 +- tests/unit/preprocessor/PCA_unittest.cc | 44 +++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 tests/unit/preprocessor/PCA_unittest.cc diff --git a/src/shogun/preprocessor/PCA.cpp b/src/shogun/preprocessor/PCA.cpp index 6752f26fc83..cbc3670075e 100644 --- a/src/shogun/preprocessor/PCA.cpp +++ b/src/shogun/preprocessor/PCA.cpp @@ -200,7 +200,8 @@ SGMatrix CPCA::apply_to_feature_matrix(CFeatures* features) m_transformation_matrix.num_rows, m_transformation_matrix.num_cols); final_feature_matrix = transform_matrix.transpose()*feature_matrix_centered; } - + + SG_INFO("Copying eigen matrix to shogun matrix\n") SGMatrix result_matrix = SGMatrix(num_dim, num_vectors); for (int32_t c=0; c +#include +#include +#include +#include + +using namespace shogun; + +TEST(PCA, PCA_output_test) +{ + SGMatrix data(2,3); + data(0,0)=1.0*cos(M_PI/3.0); + data(0,1)=2.0*cos(M_PI/3.0); + data(0,2)=3.0*cos(M_PI/3.0); + data(1,0)=1.0*sin(M_PI/3.0); + data(1,1)=2.0*sin(M_PI/3.0); + data(1,2)=3.0*sin(M_PI/3.0); + + CDenseFeatures* features=new CDenseFeatures(data); + CPCA* pca=new CPCA(); + pca->set_target_dim(1); + pca->init(features); + + SGMatrix mat=pca->apply_to_feature_matrix(features); + + EXPECT_EQ(1,mat.num_rows); + EXPECT_EQ(3,mat.num_cols); + + EXPECT_NEAR(-1,mat(0,0),0.0000001); + EXPECT_NEAR(0,mat(0,1),0.0000001); + EXPECT_NEAR(1,mat(0,2),0.0000001); + + SG_UNREF(pca); + SG_UNREF(features); +}