mltool-0.1.0.0: test/MachineLearning/UtilsTest.hs
module MachineLearning.UtilsTest
(
tests
)
where
import Test.Framework (testGroup)
import Test.Framework.Providers.HUnit
import Test.HUnit
import Test.HUnit.Approx
import Test.HUnit.Plus
import MachineLearning.Types (Vector, Matrix)
import qualified Numeric.LinearAlgebra as LA
import qualified Data.Vector.Storable as V
import Numeric.LinearAlgebra ((><))
import MachineLearning.Utils
a :: Matrix
a = (4><5) [ 1, 7, 9, 11, 2
, 77, 4, 6, 9, 0
, -11, -55, 3, 11, 55
, 7, 9, 11, 13, 15
]
sumRows :: Matrix
sumRows = (4><1) [ 30
, 96
, 3
, 55
]
sumCols :: Matrix
sumCols = (1><5) [74, -35, 29, 44, 72]
maxRows :: Matrix
maxRows = (4><1) [ 11
, 77
, 55
, 15
]
minCols :: Matrix
minCols = (1><5) [-11, -55, 3, 9, 0]
sumRowsV = LA.flatten sumRows
sumColsV = LA.flatten sumCols
maxRowsV = LA.flatten maxRows
minColsV = LA.flatten minCols
tests = [ testGroup "reduceV" [
testCase "reduceByRowsV: sum" $ assertVector "" 1e-10 sumRowsV (reduceByRowsV V.sum a)
, testCase "reduceByColumnsV: sum" $ assertVector "" 1e-10 sumColsV (reduceByColumnsV V.sum a)
, testCase "reduceByRowsV: max" $ assertVector "" 1e-10 maxRowsV (reduceByRowsV V.maximum a)
, testCase "reduceByColumnsV: min" $ assertVector "" 1e-10 minColsV (reduceByColumnsV V.minimum a)
]
, testGroup "reduce" [
testCase "reduceByRows: sum" $ assertMatrix "" 1e-10 sumRows (reduceByRows V.sum a)
, testCase "reduceByColumns: sum" $ assertMatrix "" 1e-10 sumCols (reduceByColumns V.sum a)
, testCase "reduceByRows: max" $ assertMatrix "" 1e-10 maxRows (reduceByRows V.maximum a)
, testCase "reduceByColumns: min" $ assertMatrix "" 1e-10 minCols (reduceByColumns V.minimum a)
]
, testGroup "sum" [
testCase "sumByRows" $ assertMatrix "" 1e-10 sumRows (sumByRows a)
, testCase "sumColumns" $ assertMatrix "" 1e-10 sumCols (sumByColumns a)
]
, testCase "listOfTuplesToList" $ assertEqual "" [11, 9, 27, 3, 43, 11] (listOfTuplesToList [(11, 9), (27, 3), (43, 11)])
]