packages feed

datasets 0.2.0.3 → 0.2.1

raw patch · 10 files changed

+317/−1 lines, 10 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Numeric.Datasets: csvHdrDataset :: FromNamedRecord a => Source -> Dataset a
+ Numeric.Datasets: csvHdrDatasetSep :: FromNamedRecord a => Char -> Source -> Dataset a
+ Numeric.Datasets: parseCSVHdr :: FromNamedRecord a => ByteString -> [a]
+ Numeric.Datasets: parseCSVHdrSep :: FromNamedRecord a => Char -> ByteString -> [a]
+ Numeric.Datasets: yearToUTCTime :: Double -> UTCTime
+ Numeric.Datasets.CO2: CO2 :: Double -> Double -> CO2
+ Numeric.Datasets.CO2: [co2] :: CO2 -> Double
+ Numeric.Datasets.CO2: [time] :: CO2 -> Double
+ Numeric.Datasets.CO2: data CO2
+ Numeric.Datasets.CO2: instance Data.Csv.Conversion.FromNamedRecord Numeric.Datasets.CO2.CO2
+ Numeric.Datasets.CO2: instance GHC.Generics.Generic Numeric.Datasets.CO2.CO2
+ Numeric.Datasets.CO2: instance GHC.Read.Read Numeric.Datasets.CO2.CO2
+ Numeric.Datasets.CO2: instance GHC.Show.Show Numeric.Datasets.CO2.CO2
+ Numeric.Datasets.CO2: maunaLoaCO2 :: Dataset CO2
+ Numeric.Datasets.Quakes: Quake :: Double -> Double -> Double -> Double -> Int -> Quake
+ Numeric.Datasets.Quakes: [depth] :: Quake -> Double
+ Numeric.Datasets.Quakes: [lat] :: Quake -> Double
+ Numeric.Datasets.Quakes: [long] :: Quake -> Double
+ Numeric.Datasets.Quakes: [mag] :: Quake -> Double
+ Numeric.Datasets.Quakes: [stations] :: Quake -> Int
+ Numeric.Datasets.Quakes: data Quake
+ Numeric.Datasets.Quakes: instance Data.Csv.Conversion.FromNamedRecord Numeric.Datasets.Quakes.Quake
+ Numeric.Datasets.Quakes: instance GHC.Generics.Generic Numeric.Datasets.Quakes.Quake
+ Numeric.Datasets.Quakes: instance GHC.Read.Read Numeric.Datasets.Quakes.Quake
+ Numeric.Datasets.Quakes: instance GHC.Show.Show Numeric.Datasets.Quakes.Quake
+ Numeric.Datasets.Quakes: quakes :: Dataset Quake
+ Numeric.Datasets.States: StateEdu :: String -> String -> Int -> Int -> Int -> Int -> Double -> Int -> StateEdu
+ Numeric.Datasets.States: [dollarSpend] :: StateEdu -> Double
+ Numeric.Datasets.States: [population] :: StateEdu -> Int
+ Numeric.Datasets.States: [region] :: StateEdu -> String
+ Numeric.Datasets.States: [satMath] :: StateEdu -> Int
+ Numeric.Datasets.States: [satPercent] :: StateEdu -> Int
+ Numeric.Datasets.States: [satVerbal] :: StateEdu -> Int
+ Numeric.Datasets.States: [state] :: StateEdu -> String
+ Numeric.Datasets.States: [teacherPay] :: StateEdu -> Int
+ Numeric.Datasets.States: data StateEdu
+ Numeric.Datasets.States: instance Data.Csv.Conversion.FromNamedRecord Numeric.Datasets.States.StateEdu
+ Numeric.Datasets.States: instance GHC.Generics.Generic Numeric.Datasets.States.StateEdu
+ Numeric.Datasets.States: instance GHC.Read.Read Numeric.Datasets.States.StateEdu
+ Numeric.Datasets.States: instance GHC.Show.Show Numeric.Datasets.States.StateEdu
+ Numeric.Datasets.States: states :: Dataset StateEdu
+ Numeric.Datasets.Sunspots: Sunspot :: Double -> Double -> Sunspot
+ Numeric.Datasets.Sunspots: [sunspotMonth] :: Sunspot -> Double
+ Numeric.Datasets.Sunspots: [time] :: Sunspot -> Double
+ Numeric.Datasets.Sunspots: data Sunspot
+ Numeric.Datasets.Sunspots: instance Data.Csv.Conversion.FromNamedRecord Numeric.Datasets.Sunspots.Sunspot
+ Numeric.Datasets.Sunspots: instance GHC.Generics.Generic Numeric.Datasets.Sunspots.Sunspot
+ Numeric.Datasets.Sunspots: instance GHC.Read.Read Numeric.Datasets.Sunspots.Sunspot
+ Numeric.Datasets.Sunspots: instance GHC.Show.Show Numeric.Datasets.Sunspots.Sunspot
+ Numeric.Datasets.Sunspots: sunspots :: Dataset Sunspot
+ Numeric.Datasets.UN: GdpMortality :: String -> Maybe Int -> Maybe Int -> GdpMortality
+ Numeric.Datasets.UN: [country] :: GdpMortality -> String
+ Numeric.Datasets.UN: [gdp] :: GdpMortality -> Maybe Int
+ Numeric.Datasets.UN: [infantMortality] :: GdpMortality -> Maybe Int
+ Numeric.Datasets.UN: data GdpMortality
+ Numeric.Datasets.UN: gdpMortalityUN :: Dataset GdpMortality
+ Numeric.Datasets.UN: instance Data.Csv.Conversion.FromNamedRecord Numeric.Datasets.UN.GdpMortality
+ Numeric.Datasets.UN: instance GHC.Generics.Generic Numeric.Datasets.UN.GdpMortality
+ Numeric.Datasets.UN: instance GHC.Read.Read Numeric.Datasets.UN.GdpMortality
+ Numeric.Datasets.UN: instance GHC.Show.Show Numeric.Datasets.UN.GdpMortality
+ Numeric.Datasets.Vocabulary: Female :: Sex
+ Numeric.Datasets.Vocabulary: Male :: Sex
+ Numeric.Datasets.Vocabulary: Vocab :: Integer -> Sex -> Int -> Int -> Vocab
+ Numeric.Datasets.Vocabulary: [education] :: Vocab -> Int
+ Numeric.Datasets.Vocabulary: [sex] :: Vocab -> Sex
+ Numeric.Datasets.Vocabulary: [vocabulary] :: Vocab -> Int
+ Numeric.Datasets.Vocabulary: [year] :: Vocab -> Integer
+ Numeric.Datasets.Vocabulary: data Sex
+ Numeric.Datasets.Vocabulary: data Vocab
+ Numeric.Datasets.Vocabulary: instance Data.Csv.Conversion.FromField Numeric.Datasets.Vocabulary.Sex
+ Numeric.Datasets.Vocabulary: instance Data.Csv.Conversion.FromNamedRecord Numeric.Datasets.Vocabulary.Vocab
+ Numeric.Datasets.Vocabulary: instance GHC.Classes.Eq Numeric.Datasets.Vocabulary.Sex
+ Numeric.Datasets.Vocabulary: instance GHC.Generics.Generic Numeric.Datasets.Vocabulary.Sex
+ Numeric.Datasets.Vocabulary: instance GHC.Generics.Generic Numeric.Datasets.Vocabulary.Vocab
+ Numeric.Datasets.Vocabulary: instance GHC.Read.Read Numeric.Datasets.Vocabulary.Sex
+ Numeric.Datasets.Vocabulary: instance GHC.Read.Read Numeric.Datasets.Vocabulary.Vocab
+ Numeric.Datasets.Vocabulary: instance GHC.Show.Show Numeric.Datasets.Vocabulary.Sex
+ Numeric.Datasets.Vocabulary: instance GHC.Show.Show Numeric.Datasets.Vocabulary.Vocab
+ Numeric.Datasets.Vocabulary: vocab :: Dataset Vocab
+ Numeric.Datasets.WineQuality: WineQuality :: Double -> Double -> Double -> Double -> Double -> Double -> Double -> Double -> Double -> Double -> Double -> Int -> WineQuality
+ Numeric.Datasets.WineQuality: [alcohol] :: WineQuality -> Double
+ Numeric.Datasets.WineQuality: [chlorides] :: WineQuality -> Double
+ Numeric.Datasets.WineQuality: [citricAcid] :: WineQuality -> Double
+ Numeric.Datasets.WineQuality: [density] :: WineQuality -> Double
+ Numeric.Datasets.WineQuality: [fixedAcidity] :: WineQuality -> Double
+ Numeric.Datasets.WineQuality: [freeSulfurDioxide] :: WineQuality -> Double
+ Numeric.Datasets.WineQuality: [pH] :: WineQuality -> Double
+ Numeric.Datasets.WineQuality: [quality] :: WineQuality -> Int
+ Numeric.Datasets.WineQuality: [residualSugar] :: WineQuality -> Double
+ Numeric.Datasets.WineQuality: [sulphates] :: WineQuality -> Double
+ Numeric.Datasets.WineQuality: [totalSulfurDioxide] :: WineQuality -> Double
+ Numeric.Datasets.WineQuality: [volatileAcidity] :: WineQuality -> Double
+ Numeric.Datasets.WineQuality: data WineQuality
+ Numeric.Datasets.WineQuality: instance Data.Csv.Conversion.FromNamedRecord Numeric.Datasets.WineQuality.WineQuality
+ Numeric.Datasets.WineQuality: instance GHC.Generics.Generic Numeric.Datasets.WineQuality.WineQuality
+ Numeric.Datasets.WineQuality: instance GHC.Read.Read Numeric.Datasets.WineQuality.WineQuality
+ Numeric.Datasets.WineQuality: instance GHC.Show.Show Numeric.Datasets.WineQuality.WineQuality
+ Numeric.Datasets.WineQuality: redWineQuality :: Dataset WineQuality
+ Numeric.Datasets.WineQuality: whiteWineQuality :: Dataset WineQuality

Files

changelog.md view
@@ -1,3 +1,11 @@+0.2.1++* Wine quality datasets++* Vocabulary, UN, States datasets++* CO2, Sunspots and Quakes datasets+ 0.2.0.3  * Further GHC portability
datasets.cabal view
@@ -1,5 +1,5 @@ Name:                datasets-Version:             0.2.0.3+Version:             0.2.1 Synopsis:            Classical data sets for statistics and machine learning Description:         Classical machine learning and statistics datasets from                      the UCI Machine Learning Repository and other sources.@@ -59,10 +59,17 @@                  , Numeric.Datasets.Adult                  , Numeric.Datasets.BreastCancerWisconsin                  , Numeric.Datasets.Car+                 , Numeric.Datasets.CO2                  , Numeric.Datasets.Iris                  , Numeric.Datasets.Michelson                  , Numeric.Datasets.Nightingale+                 , Numeric.Datasets.Quakes+                 , Numeric.Datasets.States+                 , Numeric.Datasets.Sunspots+                 , Numeric.Datasets.UN+                 , Numeric.Datasets.Vocabulary                  , Numeric.Datasets.Wine+                 , Numeric.Datasets.WineQuality    Build-depends:                  base                    >= 4.6 && < 5                , cassava
src/Numeric/Datasets.hs view
@@ -30,6 +30,8 @@ import qualified Data.Vector as V import qualified Data.Aeson as JSON import Control.Applicative+import Data.Time+import Data.Char (ord)  import Data.Char (toUpper) import Text.Read (readMaybe)@@ -62,6 +64,17 @@ csvDataset :: FromRecord a =>  Source -> Dataset a csvDataset  = csvDatasetPreprocess id +-- |Define a dataset from a source for a CSV file with a known header+csvHdrDataset :: FromNamedRecord a => Source -> Dataset a+csvHdrDataset src cacheDir = do+  parseCSVHdr <$> getFileFromSource cacheDir src++-- |Define a dataset from a source for a CSV file with a known header and separator+csvHdrDatasetSep :: FromNamedRecord a => Char -> Source -> Dataset a+csvHdrDatasetSep sepc src cacheDir = do+  parseCSVHdrSep sepc <$> getFileFromSource cacheDir src++-- |Define a dataset from a source for a JSON file -- data file must be accessible with HTTP, not HTTPS jsonDataset :: JSON.FromJSON a => Source -> Dataset a jsonDataset src cacheDir = do   bs <- getFileFromSource cacheDir src@@ -84,12 +97,29 @@        BL.writeFile fnm bs        return bs +-- | Parse CSV file parseCSV :: FromRecord a => (BL.ByteString -> BL.ByteString) -> BL.ByteString -> [a] parseCSV preF contents =         case decode NoHeader (preF contents) of           Right theData -> V.toList theData           Left err -> error err +-- | Parse CSV file with known header+parseCSVHdr :: FromNamedRecord a => BL.ByteString -> [a]+parseCSVHdr contents =+        case decodeByName contents of+          Right (_,theData) -> V.toList theData+          Left err -> error err++-- | Parse CSV file with known header+parseCSVHdrSep :: FromNamedRecord a => Char -> BL.ByteString -> [a]+parseCSVHdrSep sepc contents =+        let opts = defaultDecodeOptions { decDelimiter = fromIntegral (ord sepc)} in+        case decodeByNameWith opts contents of+          Right (_,theData) -> V.toList theData+          Left err -> error err++-- | Parse JSON file parseJSON :: JSON.FromJSON a => BL.ByteString -> [a] parseJSON bs = case JSON.decode bs of   Just theData ->  theData@@ -139,3 +169,15 @@   chomp (' ':cs) = chomp cs   chomp (c:cs) = c:cs   chomp [] = []++-- * Helper functions for data analysis++-- | convert a fractional year to UTCTime with second-level precision (due to not taking into account leap seconds)+yearToUTCTime :: Double -> UTCTime+yearToUTCTime yearDbl =+  let (yearn,yearFrac)  = properFraction yearDbl+      dayYearBegin = fromGregorian yearn 1 1+      (dayn, dayFrac) = properFraction $ yearFrac * (if isLeapYear yearn then 366 else 365)+      day = addDays dayn dayYearBegin+      dt = secondsToDiffTime $ round $ dayFrac * 86400+  in UTCTime day dt
+ src/Numeric/Datasets/CO2.hs view
@@ -0,0 +1,30 @@+{-# LANGUAGE DeriveGeneric, OverloadedStrings #-}++{-|++Mauna Loa CO2 time-series+++Listed as co2 here: http://vincentarelbundock.github.io/Rdatasets/datasets.html++See <http://vincentarelbundock.github.io/Rdatasets/doc/datasets/co2.html>++-}++module Numeric.Datasets.CO2 where++import Numeric.Datasets++import Data.Csv+import GHC.Generics++data CO2 = CO2+  { time :: Double+  , co2 :: Double+  } deriving (Show, Read, Generic)++instance FromNamedRecord CO2++maunaLoaCO2 :: Dataset CO2+maunaLoaCO2 = csvHdrDataset+   $ URL "http://vincentarelbundock.github.io/Rdatasets/csv/datasets/co2.csv"
+ src/Numeric/Datasets/Quakes.hs view
@@ -0,0 +1,31 @@+{-# LANGUAGE DeriveGeneric, OverloadedStrings #-}++{-|++Locations of Earthquakes off Fiji++Listed as quakes here: http://vincentarelbundock.github.io/Rdatasets/datasets.html+++-}++module Numeric.Datasets.Quakes where++import Numeric.Datasets++import Data.Csv+import GHC.Generics++data Quake = Quake+  { lat :: Double+  , long :: Double+  , depth :: Double+  , mag :: Double+  , stations :: Int+  } deriving (Show, Read, Generic)++instance FromNamedRecord Quake++quakes :: Dataset Quake+quakes = csvHdrDataset+   $ URL "http://vincentarelbundock.github.io/Rdatasets/csv/datasets/quakes.csv"
+ src/Numeric/Datasets/States.hs view
@@ -0,0 +1,43 @@+{-# LANGUAGE DeriveGeneric, OverloadedStrings #-}++{-|++Data on education in US states++<http://vincentarelbundock.github.io/Rdatasets/doc/car/States.html>++-}++module Numeric.Datasets.States where++import Numeric.Datasets++import Data.Csv+import GHC.Generics+import Control.Applicative++data StateEdu = StateEdu+  { state :: String+  , region :: String+  , population :: Int+  , satVerbal :: Int+  , satMath :: Int+  , satPercent :: Int+  , dollarSpend :: Double+  , teacherPay :: Int+  } deriving (Show, Read, Generic)++instance FromNamedRecord StateEdu where+    parseNamedRecord m = StateEdu <$>+                         m .: "" <*>+                         m .: "region"  <*>+                         m .: "pop"  <*>+                         m .: "SATV"  <*>+                         m .: "SATM"  <*>+                         m .: "percent"  <*>+                         m .: "dollars"  <*>+                         m .: "pay"++states :: Dataset StateEdu+states = csvHdrDataset+   $ URL "http://vincentarelbundock.github.io/Rdatasets/csv/car/States.csv"
+ src/Numeric/Datasets/Sunspots.hs view
@@ -0,0 +1,33 @@+{-# LANGUAGE DeriveGeneric, OverloadedStrings #-}++{-|++Monthly sunspots from 1749++Listed as sunspot.month here: http://vincentarelbundock.github.io/Rdatasets/datasets.html++See <http://vincentarelbundock.github.io/Rdatasets/doc/datasets/sunspot.month.html>++-}++module Numeric.Datasets.Sunspots where++import Numeric.Datasets++import Data.Csv+import GHC.Generics+import Control.Applicative++data Sunspot = Sunspot+  { time :: Double+  , sunspotMonth :: Double+  } deriving (Show, Read, Generic)++instance FromNamedRecord Sunspot where+    parseNamedRecord m = Sunspot <$>+                         m .: "time" <*>+                         m .: "sunspot.month"++sunspots :: Dataset Sunspot+sunspots = csvHdrDataset+   $ URL "http://vincentarelbundock.github.io/Rdatasets/csv/datasets/sunspot.month.csv"
+ src/Numeric/Datasets/UN.hs view
@@ -0,0 +1,33 @@+{-# LANGUAGE DeriveGeneric, OverloadedStrings #-}++{-|++GDP and infant mortality++<http://vincentarelbundock.github.io/Rdatasets/doc/car/UN.html>++-}++module Numeric.Datasets.UN where++import Numeric.Datasets++import Data.Csv+import GHC.Generics+import Control.Applicative++data GdpMortality = GdpMortality+  { country :: String+  , infantMortality :: Maybe Int+  , gdp :: Maybe Int+  } deriving (Show, Read, Generic)++instance FromNamedRecord GdpMortality where+    parseNamedRecord m = GdpMortality <$>+                         m .: "" <*>+                         (m .: "infant.mortality" <|> return Nothing) <*>+                         (m .: "gdp" <|> return Nothing)++gdpMortalityUN :: Dataset GdpMortality+gdpMortalityUN = csvHdrDataset+   $ URL "http://vincentarelbundock.github.io/Rdatasets/csv/car/UN.csv"
+ src/Numeric/Datasets/Vocabulary.hs view
@@ -0,0 +1,35 @@+{-# LANGUAGE DeriveGeneric, OverloadedStrings #-}++{-|++Vocabulary and Education++<http://vincentarelbundock.github.io/Rdatasets/doc/car/Vocab.html>++-}++module Numeric.Datasets.Vocabulary where++import Numeric.Datasets++import Data.Csv+import GHC.Generics++data Sex = Female | Male+  deriving (Show, Read, Eq, Generic)++instance FromField Sex where+  parseField = parseReadField++data Vocab = Vocab+  { year :: Integer+  , sex :: Sex+  , education :: Int+  , vocabulary :: Int+  } deriving (Show, Read, Generic)++instance FromNamedRecord Vocab++vocab :: Dataset Vocab+vocab = csvHdrDataset+   $ URL "http://vincentarelbundock.github.io/Rdatasets/csv/car/Vocab.csv"
+ src/Numeric/Datasets/WineQuality.hs view
@@ -0,0 +1,54 @@+{-# LANGUAGE DeriveGeneric, OverloadedStrings #-}++{-|++Quality of red and white wines based on physicochemical properties++See <http://mlr.cs.umass.edu/ml/datasets/Wine+Quality>++-}++module Numeric.Datasets.WineQuality where++import Numeric.Datasets++import Data.Csv+import GHC.Generics+import Control.Applicative++data WineQuality = WineQuality+  { fixedAcidity :: Double+  , volatileAcidity :: Double+  , citricAcid :: Double+  , residualSugar :: Double+  , chlorides :: Double+  , freeSulfurDioxide :: Double+  , totalSulfurDioxide :: Double+  , density :: Double+  , pH :: Double+  , sulphates :: Double+  , alcohol :: Double+  , quality :: Int+  } deriving (Show, Read, Generic)++instance FromNamedRecord WineQuality where+    parseNamedRecord m = WineQuality <$>+                         m .: "fixed acidity" <*>+                         m .: "volatile acidity" <*>+                         m .: "citric acid" <*>+                         m .: "residual sugar" <*>+                         m .: "chlorides" <*>+                         m .: "free sulfur dioxide" <*>+                         m .: "total sulfur dioxide" <*>+                         m .: "density" <*>+                         m .: "pH" <*>+                         m .: "sulphates" <*>+                         m .: "alcohol" <*>+                         m .: "quality"++redWineQuality, whiteWineQuality :: Dataset WineQuality+redWineQuality = csvHdrDatasetSep ';'+   $ URL "http://mlr.cs.umass.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv"++whiteWineQuality = csvHdrDatasetSep ';'+   $ URL "http://mlr.cs.umass.edu/ml/machine-learning-databases/wine-quality/winequality-white.csv"