namespace BayesServer.HelpSamples
{
using BayesServer.Data;
using Learning.Structure.PC;
using System;
using System.Data;
using System.Linq;
public static class StructuralLearningNonTemporal
{
public static void Main()
{
var network = CreateNetworkNoLinks();
var learning = new PCStructuralLearning();
var dataReaderCommand = CreateDataReaderCommand();
var variableReferences = network.Variables.Select(v => new VariableReference(v, ColumnValueType.Name, v.Name)).ToArray();
var evidenceReaderCommand = new EvidenceReaderCommand(
dataReaderCommand,
variableReferences,
new ReaderOptions());
var options = new PCStructuralLearningOptions();
var output = learning.Learn(evidenceReaderCommand, network.Nodes, options);
foreach (var linkOutput in output.LinkOutputs)
{
Console.WriteLine("Link added from {0} -> {1}", linkOutput.Link.From.Name, linkOutput.Link.To.Name);
}
}
private static Network CreateNetworkNoLinks()
{
var network = new Network();
foreach (var name in new string[] { "A", "B", "C" })
{
var node = new Node(name, new string[] { "False", "True" });
network.Nodes.Add(node);
}
return network;
}
private static DataTableDataReaderCommand CreateDataReaderCommand()
{
var data = new DataTable();
data.Columns.Add("A", typeof(string));
data.Columns.Add("B", typeof(string));
data.Columns.Add("C", typeof(string));
data.Rows.Add("True", "False", "True");
data.Rows.Add("True", "True", "True");
data.Rows.Add("True", "False", "True");
data.Rows.Add("False", "False", "False");
data.Rows.Add("False", "True", "True");
data.Rows.Add("False", "False", "False");
data.Rows.Add("False", "True", "True");
data.Rows.Add("True", "False", "True");
data.Rows.Add("True", "True", "True");
data.Rows.Add("True", "False", "True");
data.Rows.Add("True", "False", "True");
data.Rows.Add("False", "True", "True");
data.Rows.Add("True", "True", "True");
data.Rows.Add("True", "True", "True");
data.Rows.Add("False", "False", "False");
data.Rows.Add("True", "False", "True");
data.Rows.Add("False", "True", "True");
data.Rows.Add("False", "False", "False");
data.Rows.Add("True", "False", "True");
data.Rows.Add("False", "True", "True");
data.Rows.Add("False", "False", "False");
data.Rows.Add("True", "False", "True");
data.Rows.Add("False", "False", "False");
data.Rows.Add("True", "True", "True");
data.Rows.Add("False", "False", "False");
data.Rows.Add("True", "False", "True");
data.Rows.Add("False", "False", "False");
data.Rows.Add("False", "False", "False");
data.Rows.Add("True", "True", "True");
data.Rows.Add("False", "False", "False");
data.Rows.Add("True", "False", "True");
data.Rows.Add("False", "False", "False");
data.Rows.Add("True", "False", "True");
data.Rows.Add("True", "False", "True");
data.Rows.Add("True", "False", "True");
data.Rows.Add("True", "True", "True");
data.Rows.Add("True", "True", "True");
data.Rows.Add("True", "False", "True");
data.Rows.Add("False", "False", "False");
data.Rows.Add("True", "False", "True");
data.Rows.Add("True", "True", "True");
data.Rows.Add("False", "True", "True");
data.Rows.Add("True", "False", "True");
data.Rows.Add("False", "False", "False");
data.Rows.Add("False", "False", "False");
data.Rows.Add("True", "False", "True");
data.Rows.Add("True", "True", "True");
data.Rows.Add("True", "False", "True");
data.Rows.Add("False", "False", "False");
data.Rows.Add("True", "True", "True");
data.Rows.Add("True", "True", "True");
data.Rows.Add("True", "True", "True");
data.Rows.Add("True", "False", "True");
data.Rows.Add("True", "False", "True");
data.Rows.Add("True", "False", "True");
data.Rows.Add("True", "False", "True");
data.Rows.Add("True", "False", "True");
data.Rows.Add("True", "False", "True");
data.Rows.Add("False", "False", "False");
data.Rows.Add("True", "False", "True");
data.Rows.Add("False", "True", "True");
data.Rows.Add("False", "False", "False");
data.Rows.Add("True", "True", "True");
data.Rows.Add("False", "True", "True");
data.Rows.Add("True", "True", "True");
data.Rows.Add("False", "True", "True");
data.Rows.Add("False", "False", "False");
data.Rows.Add("True", "True", "True");
data.Rows.Add("False", "False", "False");
data.Rows.Add("False", "False", "False");
data.Rows.Add("True", "True", "True");
data.Rows.Add("True", "False", "True");
data.Rows.Add("False", "False", "False");
data.Rows.Add("False", "False", "False");
data.Rows.Add("True", "False", "True");
data.Rows.Add("True", "False", "True");
data.Rows.Add("True", "True", "True");
data.Rows.Add("False", "True", "True");
data.Rows.Add("True", "False", "True");
data.Rows.Add("False", "True", "True");
data.Rows.Add("True", "True", "True");
data.Rows.Add("True", "True", "True");
data.Rows.Add("True", "True", "True");
data.Rows.Add("True", "False", "True");
data.Rows.Add("False", "True", "True");
data.Rows.Add("True", "False", "True");
data.Rows.Add("True", "False", "True");
data.Rows.Add("False", "False", "False");
data.Rows.Add("True", "False", "True");
data.Rows.Add("True", "False", "True");
data.Rows.Add("True", "True", "True");
data.Rows.Add("False", "False", "False");
data.Rows.Add("False", "True", "True");
data.Rows.Add("True", "False", "True");
data.Rows.Add("True", "False", "True");
data.Rows.Add("True", "True", "True");
data.Rows.Add("True", "True", "True");
data.Rows.Add("False", "True", "True");
data.Rows.Add("True", "True", "True");
data.Rows.Add("True", "False", "True");
return new DataTableDataReaderCommand(data);
}
}
}