public Data(DataTable dataSet) { this.OriginalDataSet = dataSet; this.DataSet = ConvertNumericData(dataSet.Copy()); this.Decisions = FindDecisions(); AttributeValuePairs = AttributeValuePair.GetAttributeValuePairs(DataSet); Characteristic = new Characteristic(this); MaximalConsistent = new MaximalConsistent(this); ConditionalProbability = ProbApprox.GetConditionalProbability(this); }
public static Dictionary <string, List <int> > GetConceptApprox(MaximalConsistent maximalConsistent, List <Probabilities <List <int> > > conditionalProb, float alpha) { Dictionary <string, List <int> > tempApprox = new Dictionary <string, List <int> >(); foreach (var prob in conditionalProb) { var charIds = prob.ConditionalProb.Where(t => t.Value >= alpha).Select(u => u.Key).ToList(); // Union all Characteristic Sets var approx = charIds.SelectMany(u => u).Distinct().ToList(); //var approx = characteristic.CharacteristicSets.Where(set => charIds.Contains(set.Key)).SelectMany(u => u.Value).Distinct().ToList(); approx.Sort(); tempApprox.Add(prob.Decision, approx); } return(tempApprox); }
public static List <Probabilities <List <int> > > ComputeConditionalProbability(Data data, MaximalConsistent maximalConsistent) { List <Probabilities <List <int> > > conditionalProb = new List <Probabilities <List <int> > >(); foreach (var decision in data.Decisions) { Dictionary <List <int>, float> tempProbs = new Dictionary <List <int>, float>(); foreach (var maximalBlocks in maximalConsistent.MaximalBlocks) { tempProbs.Add(maximalBlocks, FindProbability(maximalBlocks, decision.Value)); } Probabilities <List <int> > tempProbabilities = new Probabilities <List <int> > { Decision = decision.Key, DecisionSet = decision.Value, ConditionalProb = tempProbs }; conditionalProb.Add(tempProbabilities); } return(conditionalProb); }