From 2eb17d9d6e9053baf369c779e6e95fc6222a7380 Mon Sep 17 00:00:00 2001 From: Jakhes <dean.schmitz@schmitzbauer.de> Date: Mon, 7 Nov 2022 23:49:45 +0100 Subject: [PATCH] Finishing pca tests --- src/methods/pca/pca.cpp | 10 +++++++--- src/methods/pca/pca.pl | 6 +++--- src/methods/pca/pca_test.pl | 8 ++++---- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/methods/pca/pca.cpp b/src/methods/pca/pca.cpp index 57d66dd..ae8444a 100644 --- a/src/methods/pca/pca.cpp +++ b/src/methods/pca/pca.cpp @@ -104,7 +104,11 @@ double pcaDimReduction(SP_integer scaleData, char const *decompositionPolicy, { // convert the Prolog array to arma::mat mat data = convertArrayToMat(dataMatArr, dataMatSize, dataMatRowNum); - + if(data.n_rows < newDimension) + { + raisePrologSystemExeption("NewDimension cant be greater than the Dimensionality of the Data!"); + return 0.0; + } double returnValue; @@ -119,7 +123,7 @@ double pcaDimReduction(SP_integer scaleData, char const *decompositionPolicy, { returnValue = PCA<RandomizedSVDPolicy>((scaleData == 1)).Apply(data, (size_t)newDimension); } - else if (strcmp(decompositionPolicy, "randomized-block-krylov") == 0) + else if (strcmp(decompositionPolicy, "randomized_block_krylov") == 0) { returnValue = PCA<RandomizedBlockKrylovSVDPolicy>((scaleData == 1)).Apply(data, (size_t)newDimension); } @@ -178,7 +182,7 @@ double pcaVarianceDimReduction(SP_integer scaleData, char const *decompositionPo { returnValue = PCA<RandomizedSVDPolicy>((scaleData == 1)).Apply(data, varRetained); } - else if (strcmp(decompositionPolicy, "randomized-block-krylov") == 0) + else if (strcmp(decompositionPolicy, "randomized_block_krylov") == 0) { returnValue = PCA<RandomizedBlockKrylovSVDPolicy>((scaleData == 1)).Apply(data, varRetained); } diff --git a/src/methods/pca/pca.pl b/src/methods/pca/pca.pl index 7d15876..1687d58 100644 --- a/src/methods/pca/pca.pl +++ b/src/methods/pca/pca.pl @@ -21,7 +21,7 @@ %% --Input-- %% bool scaleData => (1)true / (0)false, -%% string decompositionPolicy "exact", "randomized", "randomized-block-krylov", "quic", +%% string decompositionPolicy "exact", "randomized", "randomized_block_krylov", "quic", %% mat data, %% %% --Output-- @@ -49,7 +49,7 @@ foreign(pca, c, pcaI( +integer, %% --Input-- %% bool scaleData => (1)true / (0)false, -%% string decompositionPolicy "exact", "randomized", "randomized-block-krylov", "quic", +%% string decompositionPolicy "exact", "randomized", "randomized_block_krylov", "quic", %% mat data, %% int newDimension %% @@ -77,7 +77,7 @@ foreign(pcaDimReduction, c, pcaDimReductionI( +integer, %% --Input-- %% bool scaleData => (1)true / (0)false, -%% string decompositionPolicy "exact", "randomized", "randomized-block-krylov", "quic", +%% string decompositionPolicy "exact", "randomized", "randomized_block_krylov", "quic", %% mat data, %% float32 varRetained => [0,1] %% diff --git a/src/methods/pca/pca_test.pl b/src/methods/pca/pca_test.pl index 045b4b9..a0dc77e 100644 --- a/src/methods/pca/pca_test.pl +++ b/src/methods/pca/pca_test.pl @@ -49,7 +49,7 @@ test(pca_Normal_Use_Randomized_Block_Krylov) :- print(EigVecList). test(pca_Normal_Use_Quic) :- - pca(0, quic, [5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, TDataList, _, EigValList, EigVecList, _), + pca(0, quic, [5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 4, TDataList, _, EigValList, EigVecList, _), print('\nTransformed Data: '), print(TDataList), print('\nEigenValues: '), @@ -85,7 +85,7 @@ test(pcaDimReduction_Wrong_DecompositionPolicy_Input, [error(domain_error('The g test(pcaDimReduction_Negative_NewDimension, fail) :- pcaDimReduction(0, randomized, [5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, -2, _, _, _). -test(pcaDimReduction_Too_Big_NewDimension, fail) :- +test(pcaDimReduction_Too_Big_NewDimension, [error(_, system_error('NewDimension cant be greater than the Dimensionality of the Data!'))]) :- pcaDimReduction(0, randomized, [5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, 5, _, _, _). %% Successful Tests @@ -112,7 +112,7 @@ test(pcaDimReduction_Normal_Use_Randomized_Block_Krylov) :- print(RetainedVar). test(pcaDimReduction_Normal_Use_Quic) :- - pcaDimReduction(0, quic, [5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, 2, TDataList, _, RetainedVar), + pcaDimReduction(0, quic, [5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5,5.1,3.5,1.4,4.9], 4, 1, TDataList, _, RetainedVar), print('\nTransformed Data: '), print(TDataList), print('\nRetained Variance: '), @@ -169,7 +169,7 @@ test(pcaVarianceDimReduction_Normal_Use_Randomized_Block_Krylov) :- print(RetainedVar). test(pcaVarianceDimReduction_Normal_Use_Quic) :- - pcaVarianceDimReduction(0, quic, [5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, 0.5, TDataList, _, RetainedVar), + pcaVarianceDimReduction(0, quic, [5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 4, 0.2, TDataList, _, RetainedVar), print('\nTransformed Data: '), print(TDataList), print('\nRetained Variance: '), -- GitLab