private double ResolveRecursion(IItemNumerical item, Node.Node node) { double res = 0; if (node == null) { throw new Exception(); } if (node.IsTerminal) { return(node.Average); } if (!item.HasValue(node.FeatureName)) { throw new Exception(); } var v = item.GetValue(node.FeatureName); if (v < node.FeatureValue) { res = ResolveRecursion(item, node.Less); } else { res = ResolveRecursion(item, node.Greater); } return(res); }
public double Resolve(IItemNumerical item) { if (_trees == null || _trees.Count == 0) { throw new Exception(); } object obj = new object(); double sum = 0; Parallel.ForEach(_trees, (t) => { double d = t.Resolve(item); lock (obj) { sum = sum + d; } }); return(sum / _trees.Count); }
private void BtnResolve_Click(object obj) { Result = string.Empty; if (_forest == null) { return; } IItemNumerical item = _forest.CreateItem(); int i = 0; foreach (NameValue nv in NameValueList) { item.SetValue(nv.Name, nv.Value); i++; } if (i == 0) { return; } double res = _forest.Resolve(item); Result = res.ToString(); }
private void _forest_ForestGrowComplete(object sender, EventArgs e) { Progress = 100; IsBtnGenerateEnable = true; IsBtnResolveEnable = true; App.Current.Dispatcher.Invoke(() => { NameValueList.Clear(); }); IItemNumerical item = _forest.CreateItem(); var names = _forest.GetFeatureNames(); foreach (var name in names) { if (name == ResolutionFeatureName) { continue; } App.Current.Dispatcher.Invoke(() => { NameValueList.Add(new NameValue { Name = name, Value = 0 }); }); } }
public double Resolve(IItemNumerical item) { return(ResolveRecursion(item, _root)); }