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