module MachineLearning.Classification.Binary
(
Opt.MinimizeMethod(..)
, module Log
, module Model
, predict
, learn
, MLC.calcAccuracy
, Regularization(..)
)
where
import MachineLearning.Types (R, Vector, Matrix)
import MachineLearning.Regularization (Regularization(..))
import qualified MachineLearning.Optimization as Opt
import qualified MachineLearning.LogisticModel as Log
import qualified MachineLearning.Model as Model
import qualified MachineLearning.Classification.Internal as MLC
import qualified Data.Vector.Storable as V
import qualified Numeric.LinearAlgebra as LA
predict :: Matrix -> Vector -> Vector
predict x theta = V.map (\r -> if r >= 0.5 then 1 else 0) h
where h = Model.hypothesis Log.Logistic x theta
learn :: Opt.MinimizeMethod
-> R
-> Int
-> Regularization
-> Matrix
-> Vector
-> Vector
-> (Vector, Matrix)
learn mm eps numIters lambda x y initialTheta = Opt.minimize mm Log.Logistic eps numIters lambda x y initialTheta