Пример #1
0
        public double Merkez_Hesapla(int verisayisi, int kumesayisi, int[] elemanSayisi)
        {
            elemanSayisi = new int[kumesayisi];
            for (int i = 0; i < kumesayisi; ++i)
            {
                merkez[i].X = this.merkez[i].Y = 0.0;
            }

            for (int i = 0; i < verisayisi; ++i)
            {
                ++elemanSayisi[nokta[i].Set];
                merkez[nokta[i].Set].X += nokta[i].X;
                merkez[nokta[i].Set].Y += nokta[i].Y;
            }
            for (int i = 0; i < kumesayisi; ++i)
            {
                if (elemanSayisi[i] > 0)
                {
                    merkez[i].X /= elemanSayisi[i];
                    merkez[i].Y /= elemanSayisi[i];
                }
            }
            double toplam = 0.0;

            for (int i = 0; i < verisayisi; ++i)
            {
                toplam += Math.Pow(Uzaklik.Mesafe(this.merkez[nokta[i].Set], nokta[i]), 2.0);
            }

            form.eleman_sayisi = elemanSayisi;
            return(toplam);
        }
Пример #2
0
        public bool K_means_Iterasyon_Yap(int verisayisi, int kumesayisi)
        {
            bool durum = false;

            for (int i = 0; i < verisayisi; ++i)
            {
                double num1 = Uzaklik.Mesafe(nokta[i], merkez[0]);
                double kume = nokta[i].Set;
                nokta[i].Set = 0;
                for (int index2 = 1; index2 < kumesayisi; ++index2)
                {
                    double num2 = Uzaklik.Mesafe(this.nokta[i], this.merkez[index2]);
                    if (num2 < num1)
                    {
                        num1         = num2;
                        nokta[i].Set = index2;
                    }
                }
                if (kume != nokta[i].Set)
                {
                    durum = true;
                }
            }
            return(durum);
        }