/** * This is the main method of the class which contains the sequence of executions included in the demo. * @param args input arguments (not used) * @throws Exception if an error occurs while reading the file. */ public static void main(String[] args) throws Exception { //Step 1. We show how to compute the monthly average value of the "expenses" variable. System.out.println("-----------------------CREDIT MONTHLY AVERAGE--------------------------"); BCC.computeMonthlyAverage(); System.out.println("-----------------------------------------------------------------------"); //Step 2. We build the NaiveBayes DAG with a global hidden var to track the concept drift System.out.println("--------------------------------DAG------------------------------------"); DAG dag = BCC.modelBuilding(); System.out.println(dag.toString()); System.out.println("-----------------------------------------------------------------------"); //Step 3. We set up the plateau structure use for learning System.out.println("------------------------DEFINING PLATEAU MODEL-------------------------"); ParallelSVB parallelSVB = BCC.plateuModelSetUp(dag); System.out.println("-----------------------------------------------------------------------"); //Step 4. We learn the model and print the results. System.out.println("------------------------------LEARNING---------------------------------"); BayesianNetwork bayesianNetwork = BCC.learnModel(parallelSVB); System.out.println("\n\nLearnt Bayesian network:\n\n"); System.out.println(bayesianNetwork.toString()); System.out.println("-----------------------------------------------------------------------"); }
public static void main(String[] args) { DynamicBayesianNetworkGenerator.setNumberOfContinuousVars(0); DynamicBayesianNetworkGenerator.setNumberOfDiscreteVars(5); DynamicBayesianNetworkGenerator.setNumberOfStates(2); DynamicBayesianNetworkGenerator.setNumberOfLinks(5); DynamicBayesianNetwork dynamicNaiveBayes = DynamicBayesianNetworkGenerator.generateDynamicNaiveBayes(new Random(0), 2, true); System.out.println("ORIGINAL DYNAMIC DAG:"); System.out.println(dynamicNaiveBayes.getDynamicDAG().toString()); //System.out.println(dynamicNaiveBayes.toString()); System.out.println(); //dynamicNaiveBayes.getDynamicVariables().getListOfDynamicVariables().forEach(var -> System.out.println(var.getName())); //dynamicNaiveBayes.getDynamicVariables().getListOfDynamicVariables().forEach(var -> System.out.println(var.getName())); BayesianNetwork bn = DynamicToStaticBNConverter.convertDBNtoBN(dynamicNaiveBayes,4); System.out.println("NEW STATIC DAG:"); System.out.println(); System.out.println(bn.getDAG().toString()); System.out.println(); System.out.println("ORIGINAL DYNAMIC BN:"); System.out.println(dynamicNaiveBayes.toString()); System.out.println("STATIC BN:"); System.out.println(bn.toString()); } }
public static void main(String[] args) throws Exception { final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); DataFlink<DataInstance> dataFlink = DataFlinkLoader.loadDataFromFile(env, "./data.arff", false); DAG dag = SetBNwithHidden.getHiddenNaiveBayesStructure(dataFlink); BayesianNetwork bnet = new BayesianNetwork(dag); System.out.println("\n Number of variables \n " + bnet.getDAG().getVariables().getNumberOfVars()); System.out.println(dag.toString()); BayesianNetworkWriter.save(bnet, "./BNHiddenExample.bn"); }
/** * Builds the DAG structure of a Naive Bayes classifier with a global hidden Gaussian variable. */ private void buildGlobalDAG(){ Variables variables = new Variables(attributes); String className = attributes.getFullListOfAttributes().get(classIndex).getName(); hiddenVars = new ArrayList<Variable>(); for (int i = 0; i < this.numberOfGlobalVars ; i++) { hiddenVars.add(variables.newGaussianVariable("GlobalHidden_"+i)); } Variable classVariable = variables.getVariableByName(className); this.globalDAG = new DAG(variables); for (Attribute att : attributes.getListOfNonSpecialAttributes()) { if (att.getName().equals(className)) continue; Variable variable = variables.getVariableByName(att.getName()); globalDAG.getParentSet(variable).addParent(classVariable); for (int i = 0; i < this.numberOfGlobalVars ; i++) { globalDAG.getParentSet(variable).addParent(hiddenVars.get(i)); } } System.out.println(globalDAG.toString()); }
System.out.println(dag.toString());
System.out.println(dag.toString());
System.out.println(dag.toString());
System.out.println(learn.getGlobalDAG().toString());
@Override public void buildClusterer(Instances data) throws Exception { attributes_ = Converter.convertAttributes(data.enumerateAttributes()); Variables modelHeader = new Variables(attributes_); clusterVar_ = modelHeader.newMultinomialVariable("clusterVar", this.numberOfClusters()); inferenceAlgorithm_ = new ImportanceSampling(); inferenceAlgorithm_.setSeed(this.getSeed()); dag = new DAG(modelHeader); /* Set DAG structure. */ /* Add the hidden cluster variable as a parent of all the predictive attributes. */ dag.getParentSets().stream() .filter(w -> w.getMainVar().getVarID() != clusterVar_.getVarID()) .filter(w -> w.getMainVar().isObservable()) .forEach(w -> w.addParent(clusterVar_)); System.out.println(dag.toString()); parameterLearningAlgorithm_ = new SVB(); parameterLearningAlgorithm_.setDAG(dag); DataOnMemoryListContainer<DataInstance> batch_ = new DataOnMemoryListContainer(attributes_); data.stream().forEach(instance -> batch_.add(new DataInstanceFromDataRow(new DataRowWeka(instance, this.attributes_))) ); parameterLearningAlgorithm_.setDataStream(batch_); parameterLearningAlgorithm_.initLearning(); parameterLearningAlgorithm_.runLearning(); bnModel_ = parameterLearningAlgorithm_.getLearntBayesianNetwork(); System.out.println(bnModel_); inferenceAlgorithm_.setModel(bnModel_); }
.forEach(hv -> dag.getParentSet(w).addParent(modelHeader.getVariableByName("HiddenG_" + hv)));}); System.out.println(dag.toString());
System.out.println(dag.toString());
System.out.println(dag.toString());
System.out.println(dag.toString());
System.out.println(dag.toString());
System.out.println(dag.toString());
System.out.println(dag.toString());
System.out.println(dag.toString());
System.out.println(dag.toString());
System.out.println(dag.toString());
System.out.println(dag.toString());