コード例 #1
0
        public string klasyfikuj(double[] ob, string[][] trn, int k, Metryka m)
        {
            Dictionary <ObiektDecyzyjny, double> d = new Dictionary <ObiektDecyzyjny, double>();
            double min;
            Dictionary <string, double> Lmin = new Dictionary <string, double>();

            ObiektDecyzyjny obiekt = new ObiektDecyzyjny();

            for (int i = 0; i < trn.Length; i++)
            {
                obiekt = utwurzObiekt(trn[i], i);
                d.Add(obiekt, m(ob, obiekt.deskryptory));
            }

            foreach (var dec in fUnkialnosc(fKolumna(trn, trn[0].Length - 1)))
            {
                min = fMin(d, dec, k);
                Lmin.Add(dec, min);
            }
            for (int i = 1; i < Lmin.Count; i++)
            {
                if (Lmin.ElementAt(i - 1).Value < Lmin.ElementAt(i).Value)
                {
                    return(Lmin.ElementAt(i - 1).Key);
                }
                else if (Lmin.ElementAt(i - 1).Value > Lmin.ElementAt(i).Value)
                {
                    return(Lmin.ElementAt(i).Key);
                }
            }

            return(null);
        }
コード例 #2
0
        public ObiektDecyzyjny utwurzObiekt(string[] obiekt, int numer)
        {
            ObiektDecyzyjny ob = new ObiektDecyzyjny();

            ob.decyzja = obiekt.Last();
            ob.numer   = numer;
            double[] pom = new double[obiekt.Length - 1];
            for (int i = 0; i < obiekt.Length - 1; i++)
            {
                pom[i] = Convert.ToDouble(obiekt[i]);
            }
            ob.deskryptory = pom;
            return(ob);
        }
コード例 #3
0
        private void btnStart_Click(object sender, EventArgs e)
        {
            // Tablica z wczytanymi danymi dostępna poniżej
            // this.systemTestowy;

            // Tablica z typami atrybutów
            // this.systemTreningowy;

            /****************** Miejsce na rozwiązanie *********************************/

            int     numer = 0;
            Metryki m     = new Metryki();
            string  dec;

            Dictionary <ObiektDecyzyjny, string> klasyf = new Dictionary <ObiektDecyzyjny, string>();

            Metryka m1;

            switch (comboBox1.Text)
            {
            case "Czebyszewa":
            {
                m1 = m.czebaszewa;
                wynik.Clear();
            }
            break;

            case "Euklidesa":
            {
                m1 = m.eklidesowa;
                wynik.Clear();
            }
            break;

            case "Manhattan":
            {
                m1 = m.manhattan;
                wynik.Clear();
            }
            break;

            case "Canberra":
            {
                m1 = m.canberra;
                wynik.Clear();
            }
            break;

            case "Pearsona":
            {
                m1 = m.pearsona;
                wynik.Clear();
            }
            break;

            default:
                m1 = m.eklidesowa;
                break;
            }


            int num;

            num = Convert.ToUInt16(numericUpDown1.Value);
            foreach (var ob in systemTestowy)
            {
                ObiektDecyzyjny obiekt = new ObiektDecyzyjny();
                obiekt = utwurzObiekt(ob, numer);
                dec    = klasyfikuj(obiekt.deskryptory, systemTreningowy, num, m1);
                klasyf.Add(obiekt, dec);
                wyswietlKlasyfikacje(numer, dec, ob);
                numer++;
            }

            wyswietl(klasyf);



            /****************** Koniec miejsca na rozwiązanie ********************************/
        }