module MachineLearning.Regression
(
Model.Model(..)
, LeastSquares.LeastSquaresModel(..)
, Optimization.MinimizeMethod(..)
, Optimization.minimize
, normalEquation
, normalEquation_p
, Regularization(..)
)
where
import MachineLearning.Types (Vector, Matrix)
import MachineLearning.Optimization as Optimization
import MachineLearning.Model as Model
import MachineLearning.LeastSquaresModel as LeastSquares
import MachineLearning.Regularization (Regularization(..))
import qualified Numeric.LinearAlgebra as LA
import Numeric.LinearAlgebra ((<>), (#>))
normalEquation :: Matrix -> Vector -> Vector
normalEquation x y =
let trX = LA.tr x
in (LA.inv (trX <> x) <> trX) #> y
normalEquation_p :: Matrix -> Vector -> Vector
normalEquation_p x y =
let trX = LA.tr x
in (LA.pinv (trX <> x) <> trX) #> y