Ejemplo n.º 1
0
        private static double ObliczOdlegloscWewnatrzklastrowa(IGrouping <int, Mrowka> klaster)
        {
            var mrowki = klaster.ToList();

            if (mrowki.Count < 2)
            {
                return(0);
            }

            var odleglosc     = new MrowkowaOdleglosc(new OdlegloscEuklidesowa());
            var maksOdleglosc = double.MinValue;

            for (int i = 0; i < mrowki.Count; i++)
            {
                var m1 = mrowki[i];
                for (int j = i + 1; j < mrowki.Count; j++)
                {
                    var m2 = mrowki[j];
                    var odlegloscMiedzyMrowkami = odleglosc.OkreslOdleglosc(m1, m2);
                    maksOdleglosc = (odlegloscMiedzyMrowkami > maksOdleglosc) ? odlegloscMiedzyMrowkami : maksOdleglosc;
                }
            }

            return(maksOdleglosc);
        }
Ejemplo n.º 2
0
        private static double ObliczOdlegloscMiedzyklastrowa(IGrouping <int, Mrowka> klaster1, IGrouping <int, Mrowka> klaster2)
        {
            var mrowki1             = klaster1.ToList();
            var mrowki2             = klaster2.ToList();
            var centrum1            = OkreslCentrumKlastra(klaster1.Key, mrowki1);
            var centrum2            = OkreslCentrumKlastra(klaster2.Key, mrowki2);
            var obliczaczOdleglosci = new MrowkowaOdleglosc(new OdlegloscEuklidesowa());
            var odleglosc           = obliczaczOdleglosci.OkreslOdleglosc(centrum1, centrum2);

            return(odleglosc);
        }
Ejemplo n.º 3
0
        static void Main(string[] args)
        {
            string katalogDocelowy = DateTime.Now.ToString("yyy-MM-dd--HH-mm-ss");
            string sciezkaWynikow  = $"wyniki\\{katalogDocelowy}\\kddplus15\\";
            int    liczbaIteracji  = 5000;
            int    liczbaPowtorzen = 15;
            int    zasiegWzroku    = 2;

            var                   maszynaLosujaca = new Random();
            List <Mrowka>         mrowki;
            Dictionary <int, int> slownikKlasDocelowych = new Dictionary <int, int>();
            string                sciezkaDoDanych       =
                //@"PlikiDanych\smiecdane300p.txt";
                //@"PlikiDanych\smiecdane150p.txt";
                //@"PlikiDanych\smiecdane150mikro.txt";
                //@"PlikiDanych\kddcup.data_10_percent.txt";
                //@"PlikiDanych\kdd400.txt";
                @"PlikiDanych\kdd1000.txt";

            //@"PlikiDanych\soybean-small.data";
            //@"PlikiDanych\glass.data";
            //@"PlikiDanych\iris.data";
            //@"PlikiDanych\wine-etykiety.data";
            //@"PlikiDanych\new-thyroid-przestawione-klasy-na-koniec.data";
            using (var strumienDanych = File.OpenRead(sciezkaDoDanych))
            {
                var parser = new ParserDanych()
                {
                    DaneZawierajaEtykiety = true
                };
                var niestandaryzowaneDane = parser.ParsujDane(strumienDanych);
                var zScore = new StandaryzatorZScore();
                IEnumerable <double[]> wektoryDanych = zScore.Standaryzuj(niestandaryzowaneDane);
                mrowki = wektoryDanych.Select((wektor, indeks) => new Mrowka(indeks, wektor)).ToList();
                slownikKlasDocelowych = parser.OdczytaneEtykiety;
            }

            var stopwatch       = System.Diagnostics.Stopwatch.StartNew();
            var euklides        = new MrowkowaOdleglosc(new OdlegloscEuklidesowa());
            var miaraOdleglosci = /*euklides;//*/ new SlownikOdleglosci(mrowki, euklides);

            stopwatch.Stop();
            var msNaStworzenieOdleglosci = stopwatch.ElapsedMilliseconds;

            Func <KonfiguracjaGrupowania> konfig_asm2004_a4c      = () => Konfiguracja_A4C_2004(maszynaLosujaca, liczbaIteracji, zasiegWzroku, mrowki, miaraOdleglosci);
            Func <KonfiguracjaGrupowania> konfig_asm2007_a4c      = () => Konfiguracja_A4C_2007(maszynaLosujaca, liczbaIteracji, zasiegWzroku, mrowki, miaraOdleglosci);
            Func <KonfiguracjaGrupowania> konfig_asm2004_sa4c     = () => Konfiguracja_SA4C_2004(maszynaLosujaca, liczbaIteracji, zasiegWzroku, mrowki, miaraOdleglosci);
            Func <KonfiguracjaGrupowania> konfig_asm2007_sa4c     = () => Konfiguracja_SA4C_2007(maszynaLosujaca, liczbaIteracji, zasiegWzroku, mrowki, miaraOdleglosci);
            Func <KonfiguracjaGrupowania> konfig_asm2004_sa4cprim = () => Konfiguracja_SA4CPrim_2004(maszynaLosujaca, liczbaIteracji, zasiegWzroku, mrowki, miaraOdleglosci);
            Func <KonfiguracjaGrupowania> konfig_asm2007_sa4cprim = () => Konfiguracja_SA4CPrim_2007(maszynaLosujaca, liczbaIteracji, zasiegWzroku, mrowki, miaraOdleglosci);

            Func <KonfiguracjaGrupowania> konfig_asm2017_a4c      = () => Konfiguracja_A4C_2017(maszynaLosujaca, liczbaIteracji, zasiegWzroku, mrowki, miaraOdleglosci);
            Func <KonfiguracjaGrupowania> konfig_asm2017_sa4c     = () => Konfiguracja_SA4C_2017(maszynaLosujaca, liczbaIteracji, zasiegWzroku, mrowki, miaraOdleglosci);
            Func <KonfiguracjaGrupowania> konfig_asm2017_sa4cprim = () => Konfiguracja_SA4CPrim_2017(maszynaLosujaca, liczbaIteracji, zasiegWzroku, mrowki, miaraOdleglosci);

            //Func<KonfiguracjaGrupowania> konfig_asm2017_a4c_s1 = () => Konfiguracja_A4C_2017(maszynaLosujaca, liczbaIteracji, 1, mrowki, miaraOdleglosci);
            //Func<KonfiguracjaGrupowania> konfig_asm2017_sa4c_s1 = () => Konfiguracja_SA4C_2017(maszynaLosujaca, liczbaIteracji, 1, mrowki, miaraOdleglosci);
            //Func<KonfiguracjaGrupowania> konfig_asm2017_sa4cprim_s1 = () => Konfiguracja_SA4CPrim_2017(maszynaLosujaca, liczbaIteracji, 1, mrowki, miaraOdleglosci);

            Powtarzaj(konfig_asm2004_a4c, msNaStworzenieOdleglosci, mrowki, slownikKlasDocelowych, sciezkaWynikow + "ASM2004_A4C", liczbaPowtorzen);
            Powtarzaj(konfig_asm2007_a4c, msNaStworzenieOdleglosci, mrowki, slownikKlasDocelowych, sciezkaWynikow + "ASM2007_A4C", liczbaPowtorzen);
            Powtarzaj(konfig_asm2004_sa4c, msNaStworzenieOdleglosci, mrowki, slownikKlasDocelowych, sciezkaWynikow + "ASM2004_SA4C", liczbaPowtorzen);
            Powtarzaj(konfig_asm2007_sa4c, msNaStworzenieOdleglosci, mrowki, slownikKlasDocelowych, sciezkaWynikow + "ASM2007_SA4C", liczbaPowtorzen);
            Powtarzaj(konfig_asm2004_sa4cprim, msNaStworzenieOdleglosci, mrowki, slownikKlasDocelowych, sciezkaWynikow + "ASM2004_SA4CPrim", liczbaPowtorzen);
            Powtarzaj(konfig_asm2007_sa4cprim, msNaStworzenieOdleglosci, mrowki, slownikKlasDocelowych, sciezkaWynikow + "ASM2007_SA4CPrim", liczbaPowtorzen);

            Powtarzaj(konfig_asm2017_a4c, msNaStworzenieOdleglosci, mrowki, slownikKlasDocelowych, sciezkaWynikow + "ASM2017_A4C", liczbaPowtorzen);
            Powtarzaj(konfig_asm2017_sa4c, msNaStworzenieOdleglosci, mrowki, slownikKlasDocelowych, sciezkaWynikow + "ASM2017_SA4C", liczbaPowtorzen);
            Powtarzaj(konfig_asm2017_sa4cprim, msNaStworzenieOdleglosci, mrowki, slownikKlasDocelowych, sciezkaWynikow + "ASM2017_SA4CPrim", liczbaPowtorzen);
            //Powtarzaj(konfig_asm2017_a4c_s1, msNaStworzenieOdleglosci, mrowki, slownikKlasDocelowych, sciezkaWynikow + "ASM2017_A4C_s1", liczbaPowtorzen);
            //Powtarzaj(konfig_asm2017_sa4c_s1, msNaStworzenieOdleglosci, mrowki, slownikKlasDocelowych, sciezkaWynikow + "ASM2017_SA4C_s1", liczbaPowtorzen);
            //Powtarzaj(konfig_asm2017_sa4cprim_s1, msNaStworzenieOdleglosci, mrowki, slownikKlasDocelowych, sciezkaWynikow + "ASM2017_SA4CPrim_s1", liczbaPowtorzen);
        }