/* * public List<BayesResult> GetResults() * { * List<BayesResult> result = new List<BayesResult>(); * Net.UpdateBeliefs(); * foreach (BayesStructureSchema child in Schema) * { * for (int i = 0; i < 4; i++) * { * Net.SetEvidence(child.ChildId, "s" + i.ToString()); * Net.UpdateBeliefs(); * foreach (string parent in child.Parents) * { * for (int j = 0; j < 3; ++j) * { //var f = Net.GetNodeValue(parent); * double probability = (Net.GetNodeValue("result"))[j]; * result.Add(new BayesResult(parent, "s" + j.ToString(), child.ChildId, "s" + i.ToString(), probability)); * } * } * Net.ClearEvidence(child.ChildId); * } * * } * return result; * } */ public BayesResult2 GetResult() { BayesResult2 result = new BayesResult2(); List <double> probabilities = new List <double>(); Net.UpdateBeliefs(); foreach (CancerData testData in this.Tdata) { Net.ClearAllEvidence(); foreach (string attr in StructureAttributes) { int idx = this.AttritubeToIndex(attr); if (testData.attributes[idx] > -1 && attr.IndexOf('p') >= 0) { List <double> test = new List <double>(); test.AddRange(Net.GetNodeValue("result")); Net.SetEvidence(attr, "s" + testData.attributes[idx]); Net.UpdateBeliefs(); test.AddRange(Net.GetNodeValue("result")); test.Clear(); } } probabilities.AddRange(Net.GetNodeValue("result")); Console.WriteLine("Result:" + probabilities.ElementAt(0) + " " + probabilities.ElementAt(1) + " " + probabilities.ElementAt(2)); int cancerClass = this.ClassForMaxElement(probabilities); if (cancerClass == testData.cancerClass) { result.Good++; } else { result.Bad++; } probabilities.Clear(); } return(result); }