source("bayesserver.R")
# This example uses an R DataFrame as the data source for parameter learning.
# You can also connect to databases using DatabaseDataReaderCommand
df <- data.frame(
A = c(3.0, 10.0, 14.3, 12.2),
B = c(16, 12, 3, 6),
C = c("A", "B", "A", "B"),
D = I(c("X", "Y", "X", "X")))
dt <- toDataTable(df)
network <- new(Network)
links <- network$getLinks()
nodes <- network$getNodes()
a <- new (Node, "A", VariableValueType$CONTINUOUS)
nodes$add(a)
b <- new (Node, "B", VariableValueType$CONTINUOUS)
nodes$add(b)
c <- new (Node, "C", .jarray(c("A", "B")))
nodes$add(c)
d <- new (Node, "D", .jarray(c("X", "Y")))
nodes$add(d)
links$add(new (Link, c, a))
links$add(new (Link, c, b))
links$add(new (Link, c, d))
learning <- new (ParameterLearning, network, new (RelevanceTreeInferenceFactory))
options <- new (ParameterLearningOptions)
# You can also use DatabaseDataReaderCommand to connect to databases
dataReaderCommand <- new (DataTableDataReaderCommand, dt)
variableReferences <- lapply(network$getVariables(), function(v)
{
isDiscrete <- v$getValueType() == VariableValueType$DISCRETE
columnValueType <- if(isDiscrete) ColumnValueType$NAME else ColumnValueType$VALUE # ifelse not working
return(new(VariableReference, v, columnValueType, v$getName()))
})
evidenceReaderCommand <- new (DefaultEvidenceReaderCommand,
dataReaderCommand,
toVariableReferenceList(variableReferences),
new(ReaderOptions))
output <- learning$learn(evidenceReaderCommand, options)
print(output$getIterationCount())