staticEvidence = new HashMapAssignment(unfoldedStaticModel.getNumberOfVars());
staticEvidence = new HashMapAssignment(unfoldedStaticModel.getNumberOfVars());
staticEvidence = new HashMapAssignment(unfoldedStaticModel.getNumberOfVars());
public static void main(String[] args) throws WrongConfigurationException { DataStream<DataInstance> data = DataSetGenerator.generate(0,1000, 0, 10); System.out.println(data.getAttributes().toString()); String className = "GaussianVar0"; BayesianLinearRegression BLR = new BayesianLinearRegression(data.getAttributes()) .setClassName(className) .setWindowSize(100) .setDiagonal(false); BLR.updateModel(data); for (DataOnMemory<DataInstance> batch : data.iterableOverBatches(100)) { BLR.updateModel(batch); } System.out.println(BLR.getModel()); System.out.println(BLR.getDAG()); List<DataInstance> dataTest = data.stream().collect(Collectors.toList()).subList(0,5); for(DataInstance d : dataTest) { Assignment assignment = new HashMapAssignment(BLR.getModel().getNumberOfVars()-1); for (int i=0; i<BLR.getModel().getNumberOfVars(); i++) { Variable v = BLR.getModel().getVariables().getVariableById(i); if(!v.equals(BLR.getClassVar())) assignment.setValue(v,d.getValue(v)); } UnivariateDistribution posterior = InferenceEngine.getPosterior(BLR.getClassVar(), BLR.getModel(),assignment); System.out.println(posterior.toString()); } }
/** * Samples an {@link Assignment} randomly from a {@link BayesianNetwork} conditioned to a given Assignment. * The assignment must only contains assignments from head nodes. * @param random, a random number generator * @param conditionAssignment, an {@link Assignment} object. * @return A sampled Assignment */ public static Assignment sample(BayesianNetwork network, List<Variable> causalOrder, Random random, Assignment conditionAssignment) { HashMapAssignment assignment = new HashMapAssignment(network.getNumberOfVars()); for (Variable var : causalOrder) { if (Utils.isMissingValue(conditionAssignment.getValue(var))) { double sampledValue = network.getConditionalDistribution(var).getUnivariateDistribution(assignment).sample(random); assignment.setValue(var, sampledValue); }else{ assignment.setValue(var,conditionAssignment.getValue(var)); } } return assignment; }