| Safe Haskell | Safe-Infered |
|---|
Bayes.Examples
Description
Examples of networks
Creating a simple network
The example function is the typical example.
It is using the monad BNMonad. The goal of this monad is to offer
a way of describing the network which is natural.
There are only three functions to understand inside the monad:
-
variableto create a discrete variable of typeDV. Creating a discrete variable is using aBoundedandEnumtype like for instanceBool. -
probato define the probability P(A) of a variable A -
cptto define the conditional probability table P(A | BC)
It is important to understand how the values are organized. If you define P( wet | sprinkler road) then you have to give the values in the order:
wet=False, sprinkler=False, road=False wet=False, sprinkler=False, road=True wet=False, sprinkler=True, road=False wet=False, sprinkler=True, road=True
Finally, don't forget to return the discrete variables at the end of your network construction because those variables are used for making inferences.
example :: (DVSet,SBNCPT) example =runBN$ do winter <-variable"winter" (t :: Bool) sprinkler <-variable"sprinkler" (t :: Bool) wet <-variable"wet grass" (t :: Bool) rain <-variable"rain" (t :: Bool) road <-variable"slippery road" (t :: Bool) --probawinter ~~ [0.4,0.6]cptsprinkler [winter] ~~ [0.25,0.8,0.75,0.2]cptrain [winter] ~~ [0.9,0.2,0.1,0.8]cptwet [sprinkler,rain] ~~ [1,0.2,0.1,0.05,0,0.8,0.9,0.95]cptroad [rain] ~~ [1,0.3,0,0.7] return [winter,sprinkler,rain,wet,road]
Importing a network from a Hugin file
The exampleImport function can be used to import a file in Hugin format.
Only a subset of the format is supported.
The function will return a mapping from node names to Discrete Variables DV.
The node name is used and not the node's label.
The function is also returning a simple bayesian network SBN using CPT
as factors.
The implementation is using getDataFileName to find the path of the
test pattern installed by cabal.
exampleImport :: IO (Map.Map StringDV,SBNCPT) exampleImport = do path <-getDataFileName"cancer.net" r <-importBayesianGraphpath return (runBN$ fromJust r)
- example :: ([DV], SBN CPT)
- exampleJunction :: UndirectedSG () Vertex
- exampleImport :: IO (Map String DV, SBN CPT)
- exampleDiabete :: IO (Map String DV, SBN CPT)
- exampleAsia :: IO (Map String DV, SBN CPT)
- examplePoker :: IO (Map String DV, SBN CPT)
- exampleFarm :: IO (Map String DV, SBN CPT)
- examplePerso :: IO (Map String DV, SBN CPT)
- testJunction :: DirectedSG () Vertex
- anyExample :: FilePath -> IO (Map String DV, SBN CPT)