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