public static void main(String[] args) throws Exception{ Stopwatch watch = Stopwatch.createStarted(); DynamicBayesianNetworkGenerator dbnGenerator = new DynamicBayesianNetworkGenerator(); dbnGenerator.setNumberOfContinuousVars(0); dbnGenerator.setNumberOfDiscreteVars(3); dbnGenerator.setNumberOfStates(2); DynamicBayesianNetwork network = DynamicBayesianNetworkGenerator.generateDynamicNaiveBayes(new Random(0), 2, true); DynamicBayesianNetworkSampler sampler = new DynamicBayesianNetworkSampler(network); sampler.setSeed(0); DataStream<DynamicDataInstance> dataStream = sampler.sampleToDataBase(3,2); DataStreamWriter.writeDataToFile(dataStream, "./datasets/simulated/dnb-samples.arff"); System.out.println(watch.stop()); for (DynamicAssignment dynamicdataassignment : sampler.sampleToDataBase(3, 2)){ System.out.println("\n Sequence ID" + dynamicdataassignment.getSequenceID()); System.out.println("\n Time ID" + dynamicdataassignment.getTimeID()); System.out.println(dynamicdataassignment.outputString()); } } }
public static void main(String[] args) throws Exception{ //We first generate a DBN with 3 continuous and 3 discrete variables with 2 states DynamicBayesianNetworkGenerator dbnGenerator = new DynamicBayesianNetworkGenerator(); dbnGenerator.setNumberOfContinuousVars(3); dbnGenerator.setNumberOfDiscreteVars(3); dbnGenerator.setNumberOfStates(2); //Create a NB-like structure with temporal links in the children (leaves) and 2 states for //the class variable DynamicBayesianNetwork network = DynamicBayesianNetworkGenerator.generateDynamicNaiveBayes( new Random(0), 2, true); //Create the sampler from this network DynamicBayesianNetworkSampler sampler = new DynamicBayesianNetworkSampler(network); sampler.setSeed(0); //Sample a dataStream of 3 sequences of 1000 samples each DataStream<DynamicDataInstance> dataStream = sampler.sampleToDataBase(3,1000); //Save the created data sample in a file DataStreamWriter.writeDataToFile(dataStream, "./datasets/simulated/dnb-samples.arff"); } }
public static DataStream<DynamicDataInstance> generate(int seed, int nSquences, int nSamplesPerSequence, int nDiscreteAtts, int nContinuousAttributes){ DynamicBayesianNetworkGenerator.setSeed(seed); DynamicBayesianNetworkGenerator.setNumberOfContinuousVars(nContinuousAttributes); DynamicBayesianNetworkGenerator.setNumberOfDiscreteVars(nDiscreteAtts); DynamicBayesianNetworkGenerator.setNumberOfStates(2); int nTotal = nDiscreteAtts+nContinuousAttributes; int nLinksMin = nTotal-1; int nLinksMax = nTotal*(nTotal-1)/2; DynamicBayesianNetworkGenerator.setNumberOfLinks((int)(0.8*nLinksMin + 0.2*nLinksMax)); DynamicBayesianNetwork dbn = DynamicBayesianNetworkGenerator.generateDynamicBayesianNetwork(); DynamicBayesianNetworkSampler sampler = new DynamicBayesianNetworkSampler(dbn); sampler.setSeed(seed); return sampler.sampleToDataBase(nSquences,nSamplesPerSequence); }
public static DataStream<DynamicDataInstance> generate(int seed, int nSamples, int[] nDiscreteStates, int nContinuousAttributes){ DynamicBayesianNetworkGenerator.setSeed(seed); DynamicBayesianNetworkGenerator.setNumberOfContinuousVars(nContinuousAttributes); DynamicBayesianNetworkGenerator.setNumberOfDiscreteVars(nDiscreteStates.length); DynamicBayesianNetworkGenerator.setNumberOfStates(0); int nTotal = nDiscreteStates.length+nContinuousAttributes; int nLinksMin = nTotal-1; int nLinksMax = nTotal*(nTotal-1)/2; DynamicBayesianNetworkGenerator.setNumberOfLinks((int)(0.8*nLinksMin + 0.2*nLinksMax)); DynamicBayesianNetwork dbn = DynamicBayesianNetworkGenerator.generateDynamicBayesianNetwork(nDiscreteStates); DynamicBayesianNetworkSampler sampler = new DynamicBayesianNetworkSampler(dbn); sampler.setSeed(seed); return sampler.sampleToDataBase(nSamples/50,50); }
public static void generateEvidenceData() throws Exception { DynamicBayesianNetwork network = createDynamicFireDetectorModel(); DynamicBayesianNetworkSampler sampler = new DynamicBayesianNetworkSampler(network); sampler.setSeed(1); sampler.setLatentVar(network.getDynamicVariables().getVariableByName("Temperature")); sampler.setLatentVar(network.getDynamicVariables().getVariableByName("Smoke")); DataStream<DynamicDataInstance> dataStream = sampler.sampleToDataBase(1, 10); DataStreamWriter.writeDataToFile(dataStream, "./datasets/TimeIndexedSensorReadingsEvidence.arff"); }
public static void main(String[] args) throws IOException { Random random = new Random(1); //We first generate a dynamic Bayesian network (NB structure with class and attributes temporally linked) DynamicBayesianNetworkGenerator.setNumberOfContinuousVars(2); DynamicBayesianNetworkGenerator.setNumberOfDiscreteVars(5); DynamicBayesianNetworkGenerator.setNumberOfStates(3); DynamicBayesianNetwork dbnRandom = DynamicBayesianNetworkGenerator.generateDynamicNaiveBayes(random,2,true); //Sample dynamic data from the created dbn with random parameters DynamicBayesianNetworkSampler sampler = new DynamicBayesianNetworkSampler(dbnRandom); sampler.setSeed(0); //Sample 3 sequences of 100K instances DataStream<DynamicDataInstance> data = sampler.sampleToDataBase(3,10000); /*Parameter Learning with ML*/ //We fix the DAG structure, the data and learn the DBN ParameterLearningAlgorithm parallelMaximumLikelihood = new ParallelMaximumLikelihood(); parallelMaximumLikelihood.setWindowsSize(1000); parallelMaximumLikelihood.setDynamicDAG(dbnRandom.getDynamicDAG()); parallelMaximumLikelihood.initLearning(); parallelMaximumLikelihood.updateModel(data); DynamicBayesianNetwork dbnLearnt = parallelMaximumLikelihood.getLearntDBN(); //We print the model System.out.println(dbnLearnt.toString()); }
/** * Generate a DataStream with the given number of samples and attributes (discrete and continuous). * @param seed, the seed of the random number generator. * @param nSamples, the number of samples of the data stream. * @param nDiscreteAtts, the number of discrete attributes. * @param nContinuousAttributes, the number of continuous attributes. * @return A valid {@code DataStream} object. */ public static DataStream<DynamicDataInstance> generate(int seed, int nSamples, int nDiscreteAtts, int nContinuousAttributes){ DynamicBayesianNetworkGenerator.setSeed(seed); DynamicBayesianNetworkGenerator.setNumberOfContinuousVars(nContinuousAttributes); DynamicBayesianNetworkGenerator.setNumberOfDiscreteVars(nDiscreteAtts); DynamicBayesianNetworkGenerator.setNumberOfStates(2); int nTotal = nDiscreteAtts+nContinuousAttributes; int nLinksMin = nTotal-1; int nLinksMax = nTotal*(nTotal-1)/2; DynamicBayesianNetworkGenerator.setNumberOfLinks((int)(0.8*nLinksMin + 0.2*nLinksMax)); DynamicBayesianNetwork dbn = DynamicBayesianNetworkGenerator.generateDynamicBayesianNetwork(); DynamicBayesianNetworkSampler sampler = new DynamicBayesianNetworkSampler(dbn); sampler.setSeed(seed); return sampler.sampleToDataBase(nSamples/50,50); }
public static void generateData() throws Exception { DynamicBayesianNetwork network = createDynamicFireDetectorModel(); DynamicBayesianNetworkSampler sampler = new DynamicBayesianNetworkSampler(network); sampler.setSeed(1); sampler.setLatentVar(network.getDynamicVariables().getVariableByName("Temperature")); sampler.setLatentVar(network.getDynamicVariables().getVariableByName("Smoke")); DataStream<DynamicDataInstance> dataStream = sampler.sampleToDataBase(100,1000); DataStreamWriter.writeDataToFile(dataStream, "./datasets/TimeIndexedSensorReadings.arff"); dataStream = sampler.sampleToDataBase(1,10); DataStreamWriter.writeDataToFile(dataStream, "./datasets/TimeIndexedSensorReadingsEvidence.arff"); } public static void generateEvidenceData() throws Exception {
sampler.setSeed(0);