datasets 0.2.1 → 0.2.2
raw patch · 5 files changed
+61/−8 lines, 5 filesdep +microlensdep +wreqdep −HTTPPVP ok
version bump matches the API change (PVP)
Dependencies added: microlens, wreq
Dependencies removed: HTTP
API changes (from Hackage documentation)
+ Numeric.Datasets.Gapminder: Gapminder :: Text -> Int -> Integer -> Text -> Double -> Double -> Gapminder
+ Numeric.Datasets.Gapminder: [continent] :: Gapminder -> Text
+ Numeric.Datasets.Gapminder: [country] :: Gapminder -> Text
+ Numeric.Datasets.Gapminder: [gdpPercap] :: Gapminder -> Double
+ Numeric.Datasets.Gapminder: [lifeExp] :: Gapminder -> Double
+ Numeric.Datasets.Gapminder: [pop] :: Gapminder -> Integer
+ Numeric.Datasets.Gapminder: [year] :: Gapminder -> Int
+ Numeric.Datasets.Gapminder: data Gapminder
+ Numeric.Datasets.Gapminder: gapminder :: Dataset Gapminder
+ Numeric.Datasets.Gapminder: instance Data.Csv.Conversion.FromNamedRecord Numeric.Datasets.Gapminder.Gapminder
+ Numeric.Datasets.Gapminder: instance GHC.Generics.Generic Numeric.Datasets.Gapminder.Gapminder
+ Numeric.Datasets.Gapminder: instance GHC.Read.Read Numeric.Datasets.Gapminder.Gapminder
+ Numeric.Datasets.Gapminder: instance GHC.Show.Show Numeric.Datasets.Gapminder.Gapminder
+ Numeric.Datasets.Iris: instance GHC.Enum.Bounded Numeric.Datasets.Iris.IrisClass
+ Numeric.Datasets.Iris: instance GHC.Enum.Enum Numeric.Datasets.Iris.IrisClass
Files
- changelog.md +8/−0
- datasets.cabal +4/−2
- src/Numeric/Datasets.hs +4/−5
- src/Numeric/Datasets/Gapminder.hs +44/−0
- src/Numeric/Datasets/Iris.hs +1/−1
changelog.md view
@@ -1,3 +1,11 @@+0.2.2++* Enum, bounded instances for IrisClass++* Gapminder dataset++* Use wreq for HTTP and HTTPS requests+ 0.2.1 * Wine quality datasets
datasets.cabal view
@@ -1,5 +1,5 @@ Name: datasets-Version: 0.2.1+Version: 0.2.2 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.@@ -60,6 +60,7 @@ , Numeric.Datasets.BreastCancerWisconsin , Numeric.Datasets.Car , Numeric.Datasets.CO2+ , Numeric.Datasets.Gapminder , Numeric.Datasets.Iris , Numeric.Datasets.Michelson , Numeric.Datasets.Nightingale@@ -73,7 +74,7 @@ Build-depends: base >= 4.6 && < 5 , cassava- , HTTP+ , wreq , hashable , filepath , bytestring@@ -84,3 +85,4 @@ , file-embed , aeson , time+ , microlens
src/Numeric/Datasets.hs view
@@ -20,7 +20,6 @@ module Numeric.Datasets where -import Network.HTTP import Data.Csv import System.FilePath import System.Directory@@ -32,6 +31,8 @@ import Control.Applicative import Data.Time import Data.Char (ord)+import qualified Network.Wreq as Wreq+import Lens.Micro ((^.)) import Data.Char (toUpper) import Text.Read (readMaybe)@@ -85,15 +86,13 @@ getFileFromSource cacheDir (URL url) = do createDirectoryIfMissing True cacheDir let fnm = cacheDir </> "ds" <> show (hash url)- castRequest :: Request String -> Request BL.ByteString- castRequest r = Request (rqURI r) (rqMethod r) (rqHeaders r) "" ex <- doesFileExist fnm if ex then BL.readFile fnm else do- rsp <- simpleHTTP (castRequest $ getRequest url)- bs <- getResponseBody rsp+ rsp <- Wreq.get url+ let bs = rsp ^. Wreq.responseBody BL.writeFile fnm bs return bs
+ src/Numeric/Datasets/Gapminder.hs view
@@ -0,0 +1,44 @@+{-# LANGUAGE DeriveGeneric, OverloadedStrings #-}++{-|++Gapminder dataset - Life expectancy, GDP, population every five years per country++Source: <https://raw.githubusercontent.com/plotly/datasets/master/gapminderDataFiveYear.csv>++More information: https://cran.r-project.org/web/packages/gapminder/gapminder.pdf++-}++module Numeric.Datasets.Gapminder where++import Numeric.Datasets++import Data.Csv+import GHC.Generics+import Control.Applicative+import Data.Text (Text)++data Gapminder = Gapminder+ { country :: Text+ , year :: Int+ , pop :: Integer+ , continent :: Text+ , lifeExp :: Double+ , gdpPercap :: Double+ } deriving (Show, Read, Generic)++instance FromNamedRecord Gapminder where+ parseNamedRecord m = Gapminder <$>+ m .: "country" <*>+ m .: "year" <*>+ (roundIt <$> m .: "pop") <*>+ m .: "continent" <*>+ m .: "lifeExp" <*>+ m .: "gdpPercap"+ where roundIt :: Double -> Integer+ roundIt = round++gapminder :: Dataset Gapminder+gapminder = csvHdrDataset+ $ URL "https://raw.githubusercontent.com/plotly/datasets/master/gapminderDataFiveYear.csv"
src/Numeric/Datasets/Iris.hs view
@@ -19,7 +19,7 @@ data IrisClass = Setosa | Versicolor | Virginica- deriving (Show, Read, Eq, Generic)+ deriving (Show, Read, Eq, Generic, Enum, Bounded) instance FromField IrisClass where parseField "Iris-setosa" = return Setosa