Variable gaussianHiddenVar = this.variables.newGaussianDynamicVariable("gaussianHiddenVar" + i); gaussianHiddenVars.add(gaussianHiddenVar); });
@Override protected void buildDAG() { //Obtain the predictive attributes List<Variable> attrVars = variables.getListOfDynamicVariables().stream() .filter(v -> !v.equals(classVar)).collect(Collectors.toList()); //Create the hidden variabels hiddenMultinomial = variables.newMultinomialDynamicVariable("M", numStatesHidden); contHiddenList = new ArrayList<Variable>(); for(int i=0; i<numContinuousHidden; i++) { contHiddenList.add(variables.newGaussianDynamicVariable("Z"+Integer.toString(i))); } dynamicDAG = new DynamicDAG(variables); //arcs from the class to the hidden variables dynamicDAG.getParentSetTimeT(hiddenMultinomial).addParent(classVar); contHiddenList.stream().forEach(z -> dynamicDAG.getParentSetTimeT(z).addParent(classVar)); //arcs from the hidden vars to each attribute attrVars.stream().forEach(x->dynamicDAG.getParentSetTimeT(x).addParent(hiddenMultinomial)); for (Variable z : contHiddenList) { attrVars.stream().forEach(x->dynamicDAG.getParentSetTimeT(x).addParent(z)); } //Add dynamic links on class and continuous layer dynamicDAG.getParentSetTimeT(classVar).addParent(classVar.getInterfaceVariable()); for (Variable variable : contHiddenList) { dynamicDAG.getParentSetTimeT(variable).addParent(variable.getInterfaceVariable()); } }
@Override protected void buildDAG() { /*number of continuous hidden variable*/ int numHiddenVars=3; /** Create a set of dynamic variables from the given attributes**/ variables = new DynamicVariables(attributes); /* List of continuous hidden vars*/ List<Variable> gaussianHiddenVars = new ArrayList<>(); for(int i=0; i<numHiddenVars; i++) { Variable Hi = variables.newGaussianDynamicVariable("gaussianHiddenVar" + i); gaussianHiddenVars.add(Hi); } DynamicDAG dynamicDAG = new DynamicDAG(this.variables); for (Variable h : gaussianHiddenVars) { dynamicDAG.getParentSetTimeT(h).addParent(h.getInterfaceVariable()); } for (Variable variable: variables) { if (gaussianHiddenVars.contains(variable)) continue; for (Variable h : gaussianHiddenVars) { dynamicDAG.getParentSetTimeT(variable).addParent(h); } } //This is needed to maintain coherence in the DynamicModel class. this.variables = variables; this.dynamicDAG = dynamicDAG; }
Variable gaussianHiddenVar = this.variables.newGaussianDynamicVariable("gaussianHiddenVar");
/** * Generates a Dynamic Naive Bayes DAG with a Multinomial class variable. * @param numberClassStates the number of states for the class variable. * @param connectChildrenTemporally a {@code boolean} that indicates whether the children are connected temporally or not. * @return a {@link DynamicDAG} object. */ public static DynamicDAG generateDynamicNaiveBayesDAG(int numberClassStates, boolean connectChildrenTemporally){ DynamicVariables dynamicVariables = new DynamicVariables(); //class variable which is always discrete Variable classVar = dynamicVariables.newMultinomialDynamicVariable(classVarName, numberClassStates); //Discrete variables IntStream.range(1, numberOfDiscreteVars+1) .forEach(i -> dynamicVariables.newMultinomialDynamicVariable(discreteVarName + i, DynamicBayesianNetworkGenerator.numberOfStates)); //Continuous variables IntStream.range(1,numberOfContinuousVars+1) .forEach(i -> dynamicVariables.newGaussianDynamicVariable(continuousVarName + i)); DynamicDAG dag = new DynamicDAG(dynamicVariables); dag.getParentSetsTimeT().stream() .filter(var -> var.getMainVar().getVarID()!=classVar.getVarID()) .forEach(w -> { w.addParent(classVar); if (connectChildrenTemporally) { w.addParent(dynamicVariables.getInterfaceVariable(w.getMainVar())); } } ); dag.getParentSetTimeT(classVar).addParent(dynamicVariables.getInterfaceVariable(classVar)); return dag; }
Variable gaussianVar = variables.newGaussianDynamicVariable("GaussianVar");
hiddenVars.add(variables.newGaussianDynamicVariable("GlobalHidden_"+i));
Variable temperature = variables.newGaussianDynamicVariable("Temperature"); Variable smoke = variables.newMultinomialDynamicVariable("Smoke", 2); Variable sensorT1 = variables.newGaussianDynamicVariable(attributes.getAttributeByName("SensorTemp1")); Variable sensorT2 = variables.newGaussianDynamicVariable(attributes.getAttributeByName("SensorTemp2")); Variable sensorSmoke = variables.newGaussianDynamicVariable(attributes.getAttributeByName("SensorSmoke"));
.forEach(i -> variables.newGaussianDynamicVariable("GaussianVar" + i));
public static DynamicBayesianNetwork createDBN1(int numVars) throws Exception { DynamicVariables dynamicVariables = new DynamicVariables(); Variable classVar = dynamicVariables.newMultinomialDynamicVariable("C", 2); for (int i = 0; i < numVars; i++) { dynamicVariables.newGaussianDynamicVariable("A" + i); } DynamicDAG dag = new DynamicDAG(dynamicVariables); for (int i = 0; i < numVars; i++) { dag.getParentSetTimeT(dynamicVariables.getVariableByName("A" + i)).addParent(classVar); if (connectDBN) dag.getParentSetTimeT(dynamicVariables.getVariableByName("A" + i)).addParent(dynamicVariables.getVariableByName("A" + i).getInterfaceVariable()); } //dag.getParentSetTimeT(classVar).addParent(classVar.getInterfaceVariable()); dag.setName("dbn1"); DynamicBayesianNetwork dbn = new DynamicBayesianNetwork(dag); dbn.randomInitialization(new Random(1)); return dbn; }
.forEach(i -> dynamicVariables.newGaussianDynamicVariable("C" + i));
.forEach(i -> variables.newGaussianDynamicVariable("GaussianVar" + i));
Variable hidden = dynamicVariables.newGaussianDynamicVariable("HiddenVar");
Variable olatREAL = dynamicVariables.newRealDynamicVariable(olatMEAS); Variable aLAT = dynamicVariables.newGaussianDynamicVariable("A_LAT");
Variable temperature = variables.newGaussianDynamicVariable("Temperature"); Variable smoke = variables.newMultinomialDynamicVariable("Smoke", 2); Variable sensorT1 = variables.newGaussianDynamicVariable("SensorTemp1"); Variable sensorT2 = variables.newGaussianDynamicVariable("SensorTemp2"); Variable sensorSmoke = variables.newGaussianDynamicVariable("SensorSmoke");
Variable realPRESSURE = dynamicVariables.newRealDynamicVariable(observedPRESSURE); Variable hidden = dynamicVariables.newGaussianDynamicVariable("HiddenVar");