コード例 #1
0
 public static void AğacıYaz(Ağaç ağaç, string boşluk = "")
 {
     if (ağaç.AltListe.Count != 0)
     {
         foreach (var dal in ağaç.AltListe)
         {
             Console.WriteLine(boşluk + ağaç.isim + ":" + dal.değer);
             AğacıYaz(dal, boşluk + "    ");
         }
     }
     else
     {
         Console.WriteLine(boşluk + ağaç.sınıf);
     }
 }
コード例 #2
0
        static void Main(string[] args)
        {
            string[] file = File.ReadAllLines("C:\\Users\\Eren\\Desktop\\KararAğacı\\egitim2.csv");
            string[] test = File.ReadAllLines("C:\\Users\\Eren\\Desktop\\KararAğacı\\test2.csv");
            Ağaç     ağaç = new Ağaç();

            DizidenSayıÇıkar(file, "y");
            AğacıDoldur(ağaç, file, "y");

            ağacıBuda(ağaç);

            string dosyayazılacak = ağacıDosyayaYaz(ağaç);

            Console.WriteLine(tümünükarşılaştır(ağaç, test, "y"));

            File.WriteAllText("ağaçdosyası.txt", dosyayazılacak);

            Console.ReadLine();
        }
コード例 #3
0
        public static string ağacıDosyayaYaz(Ağaç ağaç, string boşluk = "")
        {
            string ağaçstr = "";

            if (ağaç.AltListe.Count != 0)
            {
                foreach (var dal in ağaç.AltListe)
                {
                    ağaçstr += (boşluk + ağaç.isim + ":" + dal.değer + "\r\n");
                    //File.AppendAllText(dosya,boşluk + ağaç.isim + ":" + dal.değer+"\r\n");
                    ağaçstr += ağacıDosyayaYaz(dal, boşluk + "    ");
                }
            }
            else
            {
                ağaçstr += (boşluk + ağaç.sınıf + "\r\n");
                //File.AppendAllText(dosya,boşluk + ağaç.sınıf+"\r\n");
            }
            return(ağaçstr);
        }
コード例 #4
0
        public static string ağacıBuda(Ağaç ağaç)
        {
            if (ağaç.AltListe.Count == 0)
            {
                return(ağaç.sınıf);
            }
            else
            {
                string sınıfdeğeri = "";
                bool   budayımmı   = true;
                foreach (var item in ağaç.AltListe)
                {
                    string değer = ağacıBuda(item);

                    if (değer == "")
                    {
                        budayımmı = false;
                    }

                    if (sınıfdeğeri == "")
                    {
                        sınıfdeğeri = değer;
                    }
                    else
                    {
                        if (sınıfdeğeri != değer)
                        {
                            budayımmı = false;
                        }
                    }
                }
                if (budayımmı)
                {
                    ağaç.sınıf    = sınıfdeğeri;
                    ağaç.AltListe = new List <Ağaç>();
                    return(sınıfdeğeri);
                }
            }
            return("");
        }
コード例 #5
0
        public static string tümünükarşılaştır(Ağaç ağaç, string[] dizi, string cevapsütun)
        {
            int           doğru     = 0;
            int           yanlış    = 0;
            List <string> yanlışlar = new List <string>();

            for (int i = 1; i < dizi.Length; i++)
            {
                string item = dizi[i];
                if (karşılaştır(ağaç, item, dizi[0], cevapsütun))
                {
                    doğru += 1;
                }
                else
                {
                    yanlış += 1;
                    yanlışlar.Add(dizi[i]);
                }
            }
            File.WriteAllText("yanlışCevaplar.txt", string.Join("\r\n", yanlışlar.ToArray()));
            return("Doğru Sayısı= " + doğru.ToString() + " , Yanlış Sayısı= " + yanlış.ToString() + " , Başarı= % " + ((double)doğru / (doğru + yanlış)) * 100);
        }
コード例 #6
0
        public static void AğacıDoldur(Ağaç ağaç, string[] dizi, string cevapSütun)
        {
            string[] sonuçlar = new string[dizi.Length - 1];
            int      konum    = Array.IndexOf(dizi[0].Split(sep), cevapSütun);

            for (int i = 0; i < dizi.Length - 1; i++)
            {
                sonuçlar[i] = dizi[i + 1].Split(sep)[konum];
            }
            double EntropiG = Entropi(sonuçlar);

            if (EntropiG == 0)
            {
                ağaç.sınıf = dizi[1].Split(sep)[konum];
            }
            else
            {
                List <GAIN> GainList = Gain(dizi, cevapSütun);
                GAIN        Enbüyük  = GAIN.EnBüyük(GainList);
                ağaç.isim = Enbüyük.isim;
                if (Enbüyük.histo.Count == 1)
                {
                    ağaç.sınıf = dizi[1].Split(sep)[konum];
                    return;
                }
                foreach (var dal in Enbüyük.histo)
                {
                    Ağaç AltAğaç = new Ağaç();
                    AltAğaç.değer = dal.isim;

                    string[] AltDizi = altDizi(dizi, dal, Enbüyük.isim);

                    ağaç.AltListe.Add(AltAğaç);

                    AğacıDoldur(AltAğaç, AltDizi, cevapSütun);
                }
            }
        }
コード例 #7
0
        public static bool karşılaştır(Ağaç ağaç, string veri, string başlık, string cevapsütun)
        {
            string sütunisim;

            string[] değerler;
            bool     sayımı = (ağaç.isim.Split('(')).Length > 1;

            if (sayımı)
            {
                sütunisim = ağaç.isim.Split('(')[0];
            }
            else
            {
                sütunisim = ağaç.isim;
            }
            int konum      = Array.IndexOf(başlık.Split(sep), sütunisim);
            int cevapkonum = Array.IndexOf(başlık.Split(sep), cevapsütun);

            //List<Histogram> histoList = new List<Histogram>();
            if (sayımı)
            {
                değerler = ağaç.isim.Split('(')[1].Split(')')[0].Split('-');
                double fark  = Math.Abs(double.Parse(değerler[0].Split(':')[1]) - double.Parse(veri.Split(sep)[konum]));
                string sonuc = değerler[0].Split(':')[0];
                foreach (var item in değerler)
                {
                    double arafark = Math.Abs(double.Parse(item.Split(':')[1]) - double.Parse(veri.Split(sep)[konum]));
                    if (arafark < fark)
                    {
                        fark  = arafark;
                        sonuc = item.Split(':')[0];
                    }
                }
                if (ağaç.AltListe.Count > 0)
                {
                    foreach (var item in ağaç.AltListe)
                    {
                        if (item.değer == sonuc)
                        {
                            return(karşılaştır(item, veri, başlık, cevapsütun));
                        }
                    }
                }
                else
                {
                    if (ağaç.sınıf == veri.Split(sep)[cevapkonum])
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
            }
            else
            {
                if (ağaç.AltListe.Count > 0)
                {
                    foreach (var item in ağaç.AltListe)
                    {
                        if (item.değer == veri.Split(sep)[konum])
                        {
                            return(karşılaştır(item, veri, başlık, cevapsütun));
                        }
                    }
                }
                else
                {
                    if (ağaç.sınıf == veri.Split(sep)[cevapkonum])
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
            }
            return(false);
        }