diff --git a/src/methods/pca/pca.cpp b/src/methods/pca/pca.cpp index 57d66dd60b3f2e3bb04a4effdb9007e196dde1aa..ae8444af59344ed8f89cf57c662732d58c10a81e 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 7d15876c4ffc0254666e9f714099cf3213d33fa8..1687d58014157b2659cdb8eedf95d4a5fd74de85 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 045b4b9d46a2329b10a0389191897b603964ee28..a0dc77e0690587dba22f8e93994483ba07cc823d 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: '),