module Numeric.Datasets.Iris where
import Numeric.Datasets
import Data.Csv
import GHC.Generics
import Data.FileEmbed
import Data.ByteString.Lazy (fromStrict)
data IrisClass = Setosa | Versicolor | Virginica
deriving (Show, Read, Eq, Generic)
instance FromField IrisClass where
parseField "Iris-setosa" = pure Setosa
parseField "Iris-versicolor" = pure Versicolor
parseField "Iris-virginica" = pure Virginica
parseField _ = fail "unknown iris class"
data Iris = Iris
{ sepalLength :: Double
, sepalWidth :: Double
, petalLength :: Double
, petalWidth :: Double
, irisClass :: IrisClass
} deriving (Show, Read, Generic)
instance FromRecord Iris
iris :: [Iris]
iris = parseCSV id $ fromStrict $(embedFile "datafiles/iris.data")