Пример #1
0
        public NaiveBayes(DataSet dataSet)
        {
            Headers  = new List <string>();
            Classes  = new List <string>();
            Counters = new List <AttributeCounter>();
            foreach (var v in dataSet.Headers)
            {
                Headers.Add(v);
                AttributeCounter toAdd = new AttributeCounter();
                Counters.Add(toAdd);
            }
            Headers.Add("Class");
            Counters.Add(new AttributeCounter());

            foreach (var v in dataSet.DataValues)
            {
                for (int i = 0; i < v.Attributes.Count; i++)
                {
                    Counters[i].addAttribute(v.Attributes[i].getValueAsString(), v.DataClass);
                }
                Counters[Counters.Count - 1].addAttribute(v.DataClass, v.DataClass);
            }
            Counters[Counters.Count - 1].DiffValues = Counters[Counters.Count - 1].Attributes.Count;
            foreach (var v in Counters[Counters.Count - 1].Attributes)
            {
                Classes.Add(v.Name);
            }
        }
Пример #2
0
 public KNN(DataSet data, int kn)
 {
     dataInHyperspace = data;
     k              = kn;
     minMax         = new List <MinMaxKNN>();
     classesCounter = new AttributeCounter();
     setMinMaxValuesAndCountClasses();
 }
Пример #3
0
        private string doVoting(List <AnalyzedData> data)
        {
            AttributeCounter counter = new AttributeCounter();

            foreach (var v in data)
            {
                counter.addAttribute(v.DataClass, v.DataClass);
            }
            List <Tuple <string, double> > votes = new List <Tuple <string, double> >();

            foreach (var v in counter.Attributes)
            {
                double x = (double)v.Number / (double)classesCounter.returnNumberForOneClass(v.Name, v.Name);
                Tuple <string, double> toAdd = new Tuple <string, double>(v.Name, x);
                votes.Add(toAdd);
            }
            votes = votes.OrderByDescending(x => x.Item2).ToList();
            return(votes[0].Item1);
        }