Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Localtab Group
Localtab
activetrue
titleModeling API
Code Block
titleModeling API
/* BE - Bayesia Engine - 2012 - Bayesia S.A.S
 * www.bayesia.com
 * This example is provided to show how to use the BE Modeling api. 
 * To use it, the BE.jar, xercesImpl.jar and xmlParserAPIs.jar must be in the classpath.
 */
import com.bayesia.api.*;
public class ExampleModeling {
	public static void main(String[] args) {
		if (args.length != 4) {
			System.err.println("You must provide the host and port of the BayesiaLicenseServer and a user name and password corresponding to an access to the license specified on the BayesiaLicenseServer!");
			System.exit(0);
		}
		APIModeling api = new APIModeling(args[0], Integer.parseInt(args[1]), args[2], args[3]);
		api.setComment("Simple network for lumb cancer diagnosis.");
		// Creates new nodes
		System.out.println("Creating nodes...");
		// Creates node Visit Asia
		api.addChanceLabelNode("Visit Asia", new String[] {"No", "Yes"});
		api.setNodeComment("Visit Asia", "Have you been in Asia recently?");
		// Creates node Tuberculosis
		api.addChanceLabelNode("Tuberculosis", new String[] {"No", "Yes"});
		api.setNodeComment("Tuberculosis", "Do you have tuberculosis?");
		// Creates node Age
		float[][] intervals = new float[3][2];
		intervals[0][0] = 0;
		intervals[0][1] = intervals[1][0] = 35;
		intervals[1][1] = intervals[2][0] = 60;
		intervals[2][1] = 99;
		api.addChanceIntervalNode("Age", new String[] {"<=35", "<=60", ">60"}, intervals);
		api.setNodeComment("Age", "How old are you?");
		// Long names are added to each state
		api.setStateLongNames("Age", new String[] {"Young", "Adult", "Elderly"});
		// Creates node Smoking
		api.addChanceLabelNode("Smoking", new String[] {"No", "Yes"});
		api.setNodeComment("Smoking", "Do you smoke?");
		// Creates node Bronchitis
		api.addChanceLabelNode("Bronchitis", new String[] {"No", "Yes"});
		api.setNodeComment("Bronchitis", "Do you have a bronchitis?");
		// Creates node Cancer
		api.addChanceLabelNode("Cancer", new String[] {"No", "Yes"});
		api.setNodeComment("Cancer", "Do you have a cancer?");
		// Creates node Dyspnea
		api.addChanceLabelNode("Dyspnea", new String[] {"No", "Yes"});
		api.setNodeComment("Dyspnea", "Do you have dyspnea?");
		// Creates node TbOrCa
		api.addChanceLabelNode("TbOrCa", new String[] {"False", "True"});
		api.setNodeComment("TbOrCa", "Do you have a cancer or tuberculosis?");
		// Creates node X-Ray
		api.addChanceLabelNode("X-Ray", new String[] {"Abnormal", "Normal"});
		api.setNodeComment("X-Ray", "How is your X-Ray?");
		// Adds relationships between nodes
		System.out.println("Creating arcs...");
		api.addArc("Visit Asia", "Tuberculosis");
		api.addArc("Age", "Cancer");
		api.addArc("Age", "Smoking");
		api.addArc("Smoking", "Cancer");
		api.addArc("Smoking", "Bronchitis");
		api.addArc("Bronchitis", "Dyspnea");
		api.addArc("Tuberculosis", "TbOrCa");
		api.addArc("Cancer", "TbOrCa");
		api.addArc("TbOrCa", "Dyspnea");
		api.addArc("TbOrCa", "X-Ray");
		// Creates the conditional probability tables
		System.out.println("Creating conditional probability tables...");
		double[] visitAsiaTable = new double[] {0.99, 0.01};
		api.setConditionalProbabilityTable("Visit Asia", visitAsiaTable);
		double[] ageTable = new double[] {0.35, 0.30, 0.35};
		api.setConditionalProbabilityTable("Age", ageTable);
		double[] tuberculosisTable = new double[] {0.99, 0.95, 0.01, 0.05};
		api.setConditionalProbabilityTable("Tuberculosis", tuberculosisTable);
		double[] smokingTable = new double[] {0.40, 0.50, 0.75, 0.60, 0.50, 0.25};
		api.setConditionalProbabilityTable("Smoking", smokingTable);
		double[] bronchitisTable = new double[] {0.70, 0.40, 0.30, 0.60};
		api.setConditionalProbabilityTable("Bronchitis", bronchitisTable);
		double[] cancerTable = new double[] {0.995, 0.99, 0.95, 0.985, 0.94, 0.85, 0.005, 0.01, 0.05, 0.015, 0.06, 0.15};
		api.setConditionalProbabilityTable("Cancer", cancerTable);
		double[] dyspneaTable = new double[] {0.90, 0.20, 0.30, 0.10, 0.10, 0.80, 0.70, 0.90};
		api.setConditionalProbabilityTable("Dyspnea", dyspneaTable);
		double[] xRayTable = new double[] {0.05, 0.98, 0.95, 0.02};
		api.setConditionalProbabilityTable("X-Ray", xRayTable);
		// Creates the conditional probability table of TbOrCa with a formula
		api.setFormula("TbOrCa", "?Tuberculosis? OR ?Cancer?", false, 1000, 0, false, 0, false);
		// Set no observation cost for TbOrCa
		api.setNodeCost("TbOrCa", null);
		// Display the nodes on a rectangular grid
		api.arrangeNodePositions();
		// Saves the network
		api.save("AsiaAge.xbl");
		System.out.println("Network saved as AsiaAge.xbl");
		api.close();
	}
}
Localtab
titleInference API
Code Block
/* BE - Bayesia Engine - 2012 - Bayesia S.A.S
 * www.bayesia.com
 * This example is provided to show how to use the BE Inference api. 
 * To use it, the BE.jar, xercesImpl.jar and xmlParserAPIs.jar must be in the classpath.
 */
import com.bayesia.api.*;
public class ExampleInference {
	public static void main(String[] args) {
		if (args.length != 4) {
			System.err.println("You must provide the host and port of the BayesiaLicenseServer and a user name and password corresponding to an access to the license specified on the BayesiaLicenseServer!");
			System.exit(0);
		}
		APIInference api = new APIInference("Asia.xbl", args[0], Integer.parseInt(args[1]), args[2], args[3], APIInference.EXACT_INFERENCE);
		// Displays the name of the network
		System.out.println("Network: " + api.getName());
		// Displays the node names
		String[] names = api.getNodeNames();
		System.out.println("Node names:");
		printArray(names);
		System.out.println();
		// Displays the probabilities of each node
		for (int i = 0; i < names.length; i++) {
			System.out.println("Probabilities of " + names[i] + ": ");
			printArray(api.getProbabilities(names[i]));
			System.out.println();
		}
		// Observes the node Smoking to Yes
		System.out.println("The node Smoking is observed to Yes.");
		SQL 
		///Read data from ENI
		For Each Customer
			For each variable of the network
				api.observe("Variable", "Value");
			api.getProbabilities("TargetNode");

		System.out.println();
		// Tries to fix the probabilities of the node X-Ray to the given distribution whatever the other evidence is
		System.out.println("The distrtibution of probabilities of the node X-Ray is fixed to {0.05, 0.95}.");
		api.setObservedProbabilities("X-Ray", new double[] {0.05, 0.95});
		// Displays the probabilities of the node X-Ray
		System.out.println("Probabilities of X-Ray : ");
		printArray(api.getProbabilities("X-Ray"));
		System.out.println();
		// Displays the probabilities of the node Cancer
		System.out.println("Probabilities of Cancer : ");
		printArray(api.getProbabilities("Cancer"));
		System.out.println();
		// Tries to fix the mean of the node Age to the given mean whatever the other evidence is
		System.out.println("The mean of the node Age is fixed to 60.");
		api.setObservedMean("Age", 60);
		System.out.println();
		// Observes the node Smoking to No
		System.out.println("The node Smoking is observed to No.");
		api.observe("Smoking", "No");
		System.out.println();
		// Displays the probabilities of the node X-Ray
		System.out.println("The probabilities of X-Ray remain the same: ");
		printArray(api.getProbabilities("X-Ray"));
		System.out.println();
		// Displays the mean of the node Age
		System.out.println("The mean of Age remain the same: ");
		System.out.println(api.getMean("Age"));
		System.out.println();
		// Displays the probabilities of the node Cancer
		System.out.println("And the probabilities of Cancer change: ");
		printArray(api.getProbabilities("Cancer"));
		api.close();
	}
	private static void printArray(double[] a) {
		for (int i = 0, n = a.length; i < n; i++) {
			System.out.print(a[i] + " ");
		}
		System.out.println();
	}
	private static void printArray(String[] s) {
		for (int i = 0, n = s.length; i < n; i++) {
			System.out.print(s[i] + " ");
		}
		System.out.println();
	}
}