Пример #1
0
        public void PopulateDataGridView(string[][] System_testowy_sklasyfikowany, string[][] System_testowy, List <List <int> > Lista_klas)
        {
            Odleglosc o = new Odleglosc();
            int       Ostatnia_kolumna = System_testowy_sklasyfikowany[0].Length - 1;
            var       Number_of_object = new Dictionary <int, int>();
            var       Accuracy         = new Dictionary <int, double>();
            var       Coverage         = new Dictionary <int, double>();
            var       Tpr = new Dictionary <int, double>();
            var       Slownik_predykcji = new Dictionary <int, Dictionary <int, int> >();

            Number_of_object = o.F_Number_of_object(System_testowy);
            Accuracy         = o.F_Accuracy(System_testowy_sklasyfikowany, System_testowy, Number_of_object, Podzial_na_klasy1);
            Coverage         = o.F_Coverage(System_testowy_sklasyfikowany, System_testowy, Number_of_object, Podzial_na_klasy1);
            Tpr = o.F_Tpr(System_testowy, Lista_klas, System_testowy_sklasyfikowany, Podzial_na_klasy1);
            Slownik_predykcji = o.F_Slownik_predykcji(System_testowy_sklasyfikowany, System_testowy, Podzial_na_klasy1);
            Grid.Columns.Add("", "");
            foreach (var kvp in Podzial_na_klasy1)
            {
                Grid.Columns.Add("klasadecyzyjna", Convert.ToString(System_testowy[Podzial_na_klasy1[kvp.Key][0]][Ostatnia_kolumna]));
            }
            Grid.Columns.Add("numerobiektow", "Number_of_object");
            Grid.Columns.Add("skutecznosc", "Accuracy");
            Grid.Columns.Add("pokrycie", "Coverage");
            for (int i = 0; i < Lista_klas.Count; i++)
            {
                int    value;
                double acc_value;
                double cov_value;
                var    pre_value = new Dictionary <int, int>();
                int    value1;
                int    value2;
                int    key2;
                int    key = Convert.ToInt16(System_testowy[Lista_klas[i][0]][Ostatnia_kolumna]);
                if (i == 0 && i < Lista_klas.Count - 1)
                {
                    key2 = Convert.ToInt16(System_testowy[Lista_klas[i + 1][0]][Ostatnia_kolumna]);
                }
                else
                {
                    key2 = Convert.ToInt16(System_testowy[Lista_klas[i - 1][0]][Ostatnia_kolumna]);
                }
                Accuracy.TryGetValue(key, out acc_value);
                Coverage.TryGetValue(key, out cov_value);
                Number_of_object.TryGetValue(key, out value);
                Slownik_predykcji.TryGetValue(key, out pre_value);
                pre_value.TryGetValue(key, out value1);
                pre_value.TryGetValue(key2, out value2);
                var Macierz_0_1 = new int[Lista_klas.Count];
                Grid.Rows.Add(Convert.ToString(System_testowy[Lista_klas[i][0]][Ostatnia_kolumna]), value1, value2, value, acc_value, cov_value);
            }
            int zmienna = 0;
            var tab     = new double[Tpr.Count];

            foreach (var kvp in Tpr)
            {
                Tpr.TryGetValue(kvp.Key, out tab[zmienna]);
                zmienna++;
            }
            Grid.Rows.Add("True Positive Rate", tab[1], tab[0]);
        }
Пример #2
0
        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);
        }