예제 #1
0
        static void Main(string[] args)
        {
            string nazwatxt = "iris.txt";

            Iris[] tablica         = Pobierz(nazwatxt);
            Iris   DoKlasyfikacji1 = new Iris(6.7, 3.0, 5.2, 2.3);
            Iris   DoKlasyfikacji2 = new Iris(5.1, 3.8, 1.5, 0.3);
            Iris   DoKlasyfikacji3 = new Iris(7.4, 3.2, 5.2, 2.2);
            int    k = 33;

            double[] d1 = PoliczMetrykeEuklidesowa(tablica, DoKlasyfikacji1);
            Dictionary <int, double> nearestneigbours = ZnajdzNajblizszychSasiadow(d1, k);

            tablica = Pobierz(nazwatxt);
            string wynik = Glosowanie(nearestneigbours, tablica);

            Console.WriteLine("WYNIK TO: " + wynik);
            tablica = Pobierz(nazwatxt);
            double[] d2 = PoliczMetrykeEuklidesowa(tablica, DoKlasyfikacji2);
            Dictionary <int, double> nearestneigbours2 = ZnajdzNajblizszychSasiadow(d2, k);

            tablica = Pobierz(nazwatxt);
            string wynik2 = Glosowanie(nearestneigbours2, tablica);

            Console.WriteLine("WYNIK TO: " + wynik2);
            double[] d3 = PoliczMetrykeEuklidesowa(tablica, DoKlasyfikacji3);
            Dictionary <int, double> nearestneigbours3 = ZnajdzNajblizszychSasiadow(d3, k);
            string wynik3 = Glosowanie(nearestneigbours3, tablica);

            Console.WriteLine("WYNIK TO: " + wynik3);
            Console.ReadLine();
        }
예제 #2
0
        static Iris[] Pobierz(string path)
        {
            string[]   lines     = File.ReadAllLines(path);
            double[][] tablica   = new double[lines.Length][];
            Iris[]     tabIrysow = new Iris[lines.Length];

            for (int i = 0; i < lines.Length; i++)
            {
                tabIrysow[i] = new Iris();
                string[] tmp = lines[i].Split(',');
                tablica[i] = new double[tmp.Length];
                for (int j = 0; j < tmp.Length - 1; j++)
                {
                    tablica[i][j] = Convert.ToDouble(tmp[j].Replace('.', ','));
                }
                tabIrysow[i].X1 = tablica[i][0];
                tabIrysow[i].X2 = tablica[i][1];
                tabIrysow[i].X3 = tablica[i][2];
                tabIrysow[i].X4 = tablica[i][3];

                if (tmp[tmp.Length - 1] == "Iris-setosa")
                {
                    tabIrysow[i].Kind = (iris_kind)0;
                }
                else if (tmp[tmp.Length - 1] == "Iris-versicolor")
                {
                    tabIrysow[i].Kind = (iris_kind)1;
                }
                else if (tmp[tmp.Length - 1] == "Iris-virginica")
                {
                    tabIrysow[i].Kind = (iris_kind)2;
                }
            }
            return(tabIrysow);
        }
예제 #3
0
        static double[] PoliczMetrykeEuklidesowa(Iris[] tablica, Iris X)
        {
            double[] d = new double[tablica.Length];
            for (int i = 0; i < tablica.Length; i++)
            {
                d[i] = Math.Sqrt((tablica[i].X1 - X.X1) * (tablica[i].X1 - X.X1) + (tablica[i].X2 - X.X2) * (tablica[i].X2 - X.X2) + (tablica[i].X3 - X.X3) * (tablica[i].X3 - X.X3) + (tablica[i].X4 - X.X4) * (tablica[i].X4 - X.X4));
            }

            return(d);
        }