mltool-0.1.0.0: test/MachineLearning/PCATest.hs
module MachineLearning.PCATest
(
tests
)
where
import Test.Framework (testGroup)
import Test.Framework.Providers.HUnit
import Test.HUnit
import Test.HUnit.Approx
import qualified Numeric.LinearAlgebra as LA
import MachineLearning.PCA
getDimReducerSmokeTest =
let nFeatures = 4
nExamples = 7
m = LA.matrix nFeatures [1 .. fromIntegral $ nFeatures*nExamples]
m10 = m * 10
(reduceDims, retainedVariance, mReduced) = getDimReducer m 2
m10Reduced = reduceDims m10
in do
assertEqual "dimension equality (getDimReducer)" (LA.cols mReduced) 2
assertEqual "dimension equality (reduceDims)" (LA.cols m10Reduced) 2
assertApproxEqual "retained variance" 1e-10 1 retainedVariance
getDimReducer_rvSmokeTest rv=
let nFeatures = 4
nExamples = 7
m = LA.matrix nFeatures [1 .. fromIntegral $ nFeatures*nExamples]
m10 = m * 10
(reduceDims, k, mReduced) = getDimReducer_rv m rv
m10Reduced = reduceDims m10
in do
assertEqual "dimension equality (getDimReducer_rv)" (LA.cols mReduced) k
assertEqual "dimension equality (reduceDims_rv)" (LA.cols m10Reduced) k
assertBool "reduced number of dimensions" $ k <= nFeatures
tests = [ testGroup "smoke test" [
testCase "getDimReducer" getDimReducerSmokeTest
, testCase "getDimReducer_rv, rv = 0" $ getDimReducer_rvSmokeTest 0
, testCase "getDimReducer_rv, rv = 0.5" $ getDimReducer_rvSmokeTest 0.5
, testCase "getDimReducer_rv, rv = 1" $ getDimReducer_rvSmokeTest 1
, testCase "getDimReducer_rv, rv = 2" $ getDimReducer_rvSmokeTest 2
]
]