string[] F_klasyfikacja(string[] Obiekt_testowy, string[][] System_treningowy, string Metryka_string, int K) { Metryki m = new Metryki(); Odleglosc o = new Odleglosc(); var Obiekt_sklasyfikowany = new string[Obiekt_testowy.Length]; for (int i = 0; i < Obiekt_testowy.Length; i++) { Obiekt_sklasyfikowany[i] = Obiekt_testowy[i]; } int Ostatnia_kolumna = Obiekt_sklasyfikowany.Length - 1; switch (Metryka_string) { case "Euklidesa": var Slownik_po_metryce = new Dictionary <int, double>(); for (int i = 0; i < System_treningowy.Length; i++) { Slownik_po_metryce.Add(i, m.Metryka_Euklidesa(Obiekt_testowy, System_treningowy[i])); } string decyzja = o.F_najblizszy_obiekt(Slownik_po_metryce, K, System_treningowy); if (decyzja == "!") { Obiekt_sklasyfikowany[Ostatnia_kolumna] = "!"; } else { string[] obiekt = System_treningowy[Convert.ToInt16(decyzja)]; Obiekt_sklasyfikowany[Ostatnia_kolumna] = obiekt[Ostatnia_kolumna]; } break; case "Manhattan": var Slownik_po_metryce1 = new Dictionary <int, double>(); for (int i = 0; i < System_treningowy.Length; i++) { Slownik_po_metryce1.Add(i, m.Metryka_Manhattana(Obiekt_testowy, System_treningowy[i])); } string decyzja1 = o.F_najblizszy_obiekt(Slownik_po_metryce1, K, System_treningowy); if (decyzja1 == "!") { Obiekt_sklasyfikowany[Ostatnia_kolumna] = "!"; } else { string[] obiekt = System_treningowy[Convert.ToInt16(decyzja1)]; Obiekt_sklasyfikowany[Ostatnia_kolumna] = obiekt[Ostatnia_kolumna]; } break; case "Canberra": var Slownik_po_metryce2 = new Dictionary <int, double>(); for (int i = 0; i < System_treningowy.Length; i++) { Slownik_po_metryce2.Add(i, m.Metryka_Canberra(Obiekt_testowy, System_treningowy[i])); } string decyzja2 = o.F_najblizszy_obiekt(Slownik_po_metryce2, K, System_treningowy); if (decyzja2 == "!") { Obiekt_sklasyfikowany[Ostatnia_kolumna] = "!"; } else { string[] obiekt = System_treningowy[Convert.ToInt16(decyzja2)]; Obiekt_sklasyfikowany[Ostatnia_kolumna] = obiekt[Ostatnia_kolumna]; } break; case "Czebyszewa": var Slownik_po_metryce3 = new Dictionary <int, double>(); for (int i = 0; i < System_treningowy.Length; i++) { Slownik_po_metryce3.Add(i, m.Metryka_Czebyszewa(Obiekt_testowy, System_treningowy[i])); } string decyzja3 = o.F_najblizszy_obiekt(Slownik_po_metryce3, K, System_treningowy); if (decyzja3 == "!") { Obiekt_sklasyfikowany[Ostatnia_kolumna] = "!"; } else { string[] obiekt = System_treningowy[Convert.ToInt16(decyzja3)]; Obiekt_sklasyfikowany[Ostatnia_kolumna] = obiekt[Ostatnia_kolumna]; } break; case "Pearsona": var Slownik_po_metryce4 = new Dictionary <int, double>(); for (int i = 0; i < System_treningowy.Length; i++) { Slownik_po_metryce4.Add(i, m.Metryka_Czebyszewa(Obiekt_testowy, System_treningowy[i])); } string decyzja4 = o.F_najblizszy_obiekt(Slownik_po_metryce4, K, System_treningowy); if (decyzja4 == "!") { Obiekt_sklasyfikowany[Ostatnia_kolumna] = "!"; } else { string[] obiekt = System_treningowy[Convert.ToInt16(decyzja4)]; Obiekt_sklasyfikowany[Ostatnia_kolumna] = obiekt[Ostatnia_kolumna]; } break; } return(Obiekt_sklasyfikowany); }
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 ********************************/ }