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); }
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); }
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 ********************************/ }