{-| Module: MachineLearning.Utils Description: Utils Copyright: (c) Alexander Ignatyev, 2016 License: BSD-3 Stability: experimental Portability: POSIX Various helpful utilities. -} module MachineLearning.Utils ( reduceByRowsV , reduceByColumnsV , reduceByRows , reduceByColumns , sumByRows , sumByColumns , listOfTuplesToList ) where import MachineLearning.Types (R, Vector, Matrix) import qualified Data.Vector.Storable as V import qualified Numeric.LinearAlgebra as LA reduceByRowsV :: (Vector -> R) -> Matrix -> Vector reduceByRowsV f = LA.vector . map f . LA.toRows reduceByColumnsV :: (Vector -> R) -> Matrix -> Vector reduceByColumnsV f = LA.vector . map f . LA.toColumns reduceByRows :: (Vector -> R) -> Matrix -> Matrix reduceByRows f = LA.asColumn . reduceByRowsV f reduceByColumns :: (Vector -> R) -> Matrix -> Matrix reduceByColumns f = LA.asRow . reduceByColumnsV f sumByColumns :: Matrix -> Matrix sumByColumns = reduceByColumns V.sum sumByRows :: Matrix -> Matrix sumByRows = reduceByRows V.sum -- | Converts list of tuples into list. listOfTuplesToList :: [(a, a)] -> [a] listOfTuplesToList [] = [] listOfTuplesToList ((a, b):xs) = a : b : listOfTuplesToList xs