top of page

Yapay Zeka Karar Agaclari Uygulamasi [C#]

  • Writer: Sevdanur GENC
    Sevdanur GENC
  • Jan 28, 2013
  • 9 min read

Bu makale iceriginde Suleyman Demirel Universitesi – Bilgisayar Muhendisligi bolumu’nun Yapay Zeka dersi icin gelistirilen Karar Agaci uygulamasinin .Net’de C# programlama dili ile birlikte kullanilarak yapilmis bir ornegini paylasiyor olacagim.   Simdi dilerseniz uygulamanin tasarim ve kod kisimlarina gecelim. Visual Studio’nun Windows Forms Application proje arayuzunde hazirliyoruz.

Pojo.Cs Kaynak Kodlari ;

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace KararAgaclari { public class Pojo { string ad; public string Ad { get { return ad; } set { ad = value; } } string tip; public string Tip { get { return tip; } set { tip = value; } } double ent; public double Ent { get { return ent; } set { ent = value; } } double inf; public double Inf { get { return inf; } set { inf = value; } } public Pojo(string ad, double inf) { this.ad = ad; this.inf = inf; } public Pojo(string ad, string tip, double ent) { this.tip = tip; this.ad = ad; this.ent = ent; } } }

Form1.Cs Kaynak Kodlari;

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Collections; namespace KararAgaclari { public partial class Form1 : Form { public Form1() { InitializeComponent(); } int i; List <KararAgaclari.Pojo> entropiler = new List<KararAgaclari.Pojo>(); public List<KararAgaclari.Pojo> infler = new List<KararAgaclari.Pojo>(); public List<KararAgaclari.Pojo> inf = new List<KararAgaclari.Pojo>(); private void button1_Click(object sender, EventArgs e) { i = dataGridView1.Rows.Add(); dataGridView1.Rows

.Cells<0>

.Value = cmbTansiyon.SelectedItem.ToString(); dataGridView1.Rows

.Cells<1>

.Value = cmbSigara.SelectedItem.ToString(); dataGridView1.Rows

.Cells<2>

.Value = cmbYas.SelectedItem.ToString(); dataGridView1.Rows

.Cells<3>

.Value = cmbKilo.SelectedItem.ToString(); dataGridView1.Rows

.Cells<4>

.Value = cmbHastalik.SelectedItem.ToString(); dataGridView1.Rows

.Cells<5>

.Value = cmbAmeliyat.SelectedItem.ToString(); dataGridView1.Rows

.Cells<6>

.Value = cmbAgri.SelectedItem.ToString(); dataGridView1.Rows

.Cells<7>

.Value = cmbCinsiyet.SelectedItem.ToString(); dataGridView1.Rows

.Cells<8>

.Value = cmbKriz.SelectedItem.ToString(); } private void button2_Click(object sender, EventArgs e) { listBox1.Items.Clear(); inf = inflerim(); EntropiSirala(); treeView1.Nodes.Add(inf<0>

.Ad); for (int i = 1; i < inf.Count; i++) { treeView1.Nodes<0>

.Nodes.Add(inf

.Ad); } int a = 0; for (int i = 1; i < inf.Count; i++) { a = 0; for (int j = 0; j < entropiler.Count; j++) { if (inf

.Ad.Equals(entropiler

.Ad)) { Console.WriteLine("aaa"); treeView1.Nodes<0>

.Nodes

.Nodes.Add(entropiler

.Tip); a++; } } } } public double kriz() { int E = 0, H = 0; double satir=dataGridView1.RowCount-1; for (int i = 0; i <satir ; i++) { if (dataGridView1.Rows

.Cells<8>

.Value.Equals("Evet"))  E++; else  H++; } double a = E / satir; double b = H / satir; double ent=Entropi(Math.Round(a,2),Math.Round(b,2)); return Math.Round(ent,2); } public double tansiyon() { double satir = dataGridView1.RowCount-1; int YE = 0,YH=0, NE = 0,NH=0, DE = 0,DH=0; double Y=0,N=0,D=0; double inf; for (int i = 0; i < satir; i++) { if (dataGridView1.Rows

.Cells<0>

.Value.Equals("Yüksek") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Evet")) YE++; else if (dataGridView1.Rows

.Cells<0>

.Value.Equals("Yüksek") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Hayır")) YH++; else if (dataGridView1.Rows

.Cells<0>

.Value.Equals("Normal") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Evet")) NE++; else if (dataGridView1.Rows

.Cells<0>

.Value.Equals("Normal") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Hayır")) NH++; else if (dataGridView1.Rows

.Cells<0>

.Value.Equals("Düşük") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Evet")) DE++; else if (dataGridView1.Rows

.Cells<0>

.Value.Equals("Düşük") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Hayır")) DH++; } Y=(YE+YH); N=(NE+NH); D=(DE+DH); double entY =(Y!=0)?Entropi(YE / Y, YH / Y):0; double entN =(N!=0)? Entropi(NE/ N, NH/ N):0; double entD = (D!=0)?Entropi(DE/ D, DH/ D):0; entropiler.Add(new Pojo("Tansiyon", "Yüksek", entY)); entropiler.Add(new Pojo("Tansiyon", "Normal", entN)); entropiler.Add(new Pojo("Tansiyon", "Düşük", entD)); string b = Convert.ToString(kriz()); inf = Math.Round((kriz() - ((Y / satir) * entY) + ((N / satir) * entN) + ((D / satir) * entD)),2); listBox1.Items.Add(" " + YE + " " + YH + " " + NE + " " + NH + " " + DE + " " + DH + " /" + entY + " " + entN + " " + entD + " / " + inf); return Math.Round(inf,2); } public double sigara() { double satir = dataGridView1.RowCount-1; int EE = 0, EH = 0, HE = 0, HH = 0, BE = 0, BH = 0; double E = 0, H = 0, B = 0; double inf; for (int i = 0; i < satir; i++) { if (dataGridView1.Rows

.Cells<1>

.Value.Equals("Evet") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Evet")) EE++; else if (dataGridView1.Rows

.Cells<1>

.Value.Equals("Evet") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Hayır")) EH++; else if (dataGridView1.Rows

.Cells<1>

.Value.Equals("Hayır") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Evet")) HE++; else if (dataGridView1.Rows

.Cells<1>

.Value.Equals("Hayır") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Hayır")) HH++; else if (dataGridView1.Rows

.Cells<1>

.Value.Equals("Bıraktı") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Evet")) BE++; else if (dataGridView1.Rows

.Cells<1>

.Value.Equals("Bıraktı") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Hayır")) BH++; } E = (EE + EH); H = (HE + HH); B = (BE + HH); double entE =(E!=0)? Entropi(EE / E, EH / E):0; double entH = (H!=0)?Entropi(HE / H, HH / H):0; double entB = (B != 0) ? Entropi(BE / B, BH / B) : 0; entropiler.Add(new Pojo("Sigara", "Evet", entE)); entropiler.Add(new Pojo("Sigara", "Hayır", entH)); entropiler.Add(new Pojo("Sigara", "Bıraktı", entB)); inf =Math.Round( (kriz() - ((E / satir) * entE) + ((H / satir) * entH) + ((B / satir) * entB)),2); listBox1.Items.Add(" " + EE + " " + EH + " " + HE + " " + HH + " " + BE + " " + BH + " /" + entE + " " + entH + " " + entB + " / " + inf); return Math.Round(inf,2); } public double yas() { double satir = dataGridView1.RowCount - 1; int GE = 0, GH = 0, OE = 0, OH = 0, YE = 0, YH = 0; double G = 0, O = 0, Y = 0; double inf; for (int i = 0; i < satir; i++) { if (dataGridView1.Rows

.Cells<2>

.Value.Equals("Genç") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Evet")) GE++; else if (dataGridView1.Rows

.Cells<2>

.Value.Equals("Genç") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Hayır")) GH++; else if (dataGridView1.Rows

.Cells<2>

.Value.Equals("Orta Yaşlı") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Evet")) OE++; else if (dataGridView1.Rows

.Cells<2>

.Value.Equals("Orta Yaşlı") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Hayır")) OH++; else if (dataGridView1.Rows

.Cells<2>

.Value.Equals("Yaşlı") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Evet")) YE++; else if (dataGridView1.Rows

.Cells<2>

.Value.Equals("Yaşlı") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Hayır")) YH++; } G = (GE + GH); O= (OE + OH); Y = (YE + YH); double entG =(G!=0)? Entropi(GE / G, GH / G):0; double entO = (O!=0)?Entropi(OE / O, OH / O):0; double entY = (Y != 0) ? Entropi(YE / Y, YH / Y) : 0; entropiler.Add(new Pojo("Yaş", "Genç", entG)); entropiler.Add(new Pojo("Yaş", "Orta Yaşlı", entO)); entropiler.Add(new Pojo("Yaş", "Yaşlı", entY)); inf = Math.Round((kriz() - ((G / satir) * entG) + ((O / satir) * entO) + ((Y / satir) * entY)),2); listBox1.Items.Add(" " + GE + " " + GH + " " + OE + " " + OH + " " + YE + " " + YH + " /" + entG + " " + entO + " " + entY + " / " + inf); return Math.Round(inf, 2); } public double kilo() { double satir = dataGridView1.RowCount - 1; int AE = 0, AH = 0, NE = 0, NH = 0, FE = 0, FH = 0; double A = 0, N = 0, F = 0; double inf; for (int i = 0; i < satir; i++) { if (dataGridView1.Rows

.Cells<3>

.Value.Equals("Az") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Evet")) AE++; else if (dataGridView1.Rows

.Cells<3>

.Value.Equals("Az") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Hayır")) AH++; else if (dataGridView1.Rows

.Cells<3>

.Value.Equals("Normal") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Evet")) NE++; else if (dataGridView1.Rows

.Cells<3>

.Value.Equals("Normal") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Hayır")) NH++; else if (dataGridView1.Rows

.Cells<3>

.Value.Equals("Fazla") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Evet")) FE++; else if (dataGridView1.Rows

.Cells<3>

.Value.Equals("Fazla") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Hayır")) FH++; } A = (AE + AH); N = (NE + NH); F = (FE + FH); double entA = (A!=0)?Entropi(AE / A, AH / A):0; double entN = (N!=0)?Entropi(NE / N, NH / N):0; double entF = (F!=0)?Entropi(FE / F, FH / F):0; entropiler.Add(new Pojo("Kilo", "Az", entA)); entropiler.Add(new Pojo("Kilo", "Normal", entN)); entropiler.Add(new Pojo("Kilo", "Fazla", entF)); inf =Math.Round( (kriz() - ((A / satir) * entA) + ((N / satir) * entN) + ((F / satir) * entF)),2); listBox1.Items.Add(" " + AE + " " + AH + " " + NE + " " + NH + " " + FE + " " + FH+ " /" + entA + " " + entN + " " + entF + " / " + inf); return Math.Round(inf, 2); } public double genetikmi() { double satir = dataGridView1.RowCount - 1; int EE = 0, EH = 0, HE = 0, HH = 0; double E = 0, H = 0; double inf; for (int i = 0; i < satir; i++) { if (dataGridView1.Rows

.Cells<4>

.Value.Equals("Evet") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Evet")) EE++; else if (dataGridView1.Rows

.Cells<4>

.Value.Equals("Evet") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Hayır")) EH++; else if (dataGridView1.Rows

.Cells<4>

.Value.Equals("Hayır") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Evet")) HE++; else if (dataGridView1.Rows

.Cells<4>

.Value.Equals("Hayır") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Hayır")) HH++; } E = (EE + EH); H = (HE + HH); double entE = (E!=0)?Entropi(EE / E, EH / E):0; double entH = (H != 0) ? Entropi(HE / H, HH / H) : 0; entropiler.Add(new Pojo("Genetik mi", "Evet", entE)); entropiler.Add(new Pojo("Genetik mi", "Hayır", entH)); inf =Math.Round( (kriz() - ((E / satir) * entE) + ((H / satir) * entH)),2); listBox1.Items.Add(" " + EE + " " + EH + " " + HE + " " + HH + " /" + entE + " " + entH + " / " + inf); return Math.Round(inf, 2); } public double ameyiyatgecirdimi() { double satir = dataGridView1.RowCount - 1; int EE = 0, EH = 0, HE = 0, HH = 0; double E = 0, H = 0; double inf; for (int i = 0; i < satir; i++) { if (dataGridView1.Rows

.Cells<5>

.Value.Equals("Evet") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Evet")) EE++; else if (dataGridView1.Rows

.Cells<5>

.Value.Equals("Evet") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Hayır")) EH++; else if (dataGridView1.Rows

.Cells<5>

.Value.Equals("Hayır") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Evet")) HE++; else if (dataGridView1.Rows

.Cells<5>

.Value.Equals("Hayır") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Hayır")) HH++; } E = (EE + EH); H = (HE + HH); double entE = (E!=0)?Entropi(EE / E, EH / E):0; double entH = (H!=0)?Entropi(HE / H, HH / H):0; entropiler.Add(new Pojo("Ameliyat var mı", "Evet", entE)); entropiler.Add(new Pojo("Ameliyat var mı", "Hayır", entH)); inf =Math.Round( (kriz() - ((E / satir) * entE) + ((H / satir) * entH)),2); listBox1.Items.Add(" " + EE + " " + EH + " " + HE + " " + HH + " /" + entE + " " + entH + " / " + inf); return Math.Round(inf, 2); } public double agrivarmi() { double satir = dataGridView1.RowCount - 1; int YE = 0, YH = 0, AE = 0, AH = 0, OE = 0, OH = 0, CE = 0, CH = 0; double Y = 0, A = 0, O = 0, C = 0; double inf; for (int i = 0; i < satir; i++) { if (dataGridView1.Rows

.Cells<6>

.Value.Equals("Yok") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Evet")) YE++; else if (dataGridView1.Rows

.Cells<6>

.Value.Equals("Yok") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Hayır")) YH++; else if (dataGridView1.Rows

.Cells<6>

.Value.Equals("Az") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Evet")) AE++; else if (dataGridView1.Rows

.Cells<6>

.Value.Equals("Az") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Hayır")) AH++; else if (dataGridView1.Rows

.Cells<6>

.Value.Equals("Orta Şiddette") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Evet")) OE++; else if (dataGridView1.Rows

.Cells<6>

.Value.Equals("Orta Şiddette") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Hayır")) OH++; else if (dataGridView1.Rows

.Cells<6>

.Value.Equals("Çok") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Evet")) CE++; else if (dataGridView1.Rows

.Cells<6>

.Value.Equals("Çok") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Hayır")) CH++; } Y = (YE + YH); A = (AE + AH); O = (OE + OH); C = (CE + CH); double entY = (Y!=0)?Entropi(YE / Y, YH / Y):0; double entA = (A!=0)?Entropi(AE / A, AH / A):0; double entO = (O!=0)?Entropi(OE / O, OH / O):0; double entC = (C!=0)?Entropi(CE / C, CH / C):0; entropiler.Add(new Pojo("Ağrı", "Yok", entY)); entropiler.Add(new Pojo("Ağrı", "Az", entA)); entropiler.Add(new Pojo("Ağrı", "Orta Şiddette", entO)); entropiler.Add(new Pojo("Ağrı", "Çok", entC)); inf =Math.Round( (kriz() - ((Y / satir) * entY) + ((A / satir) * entA) + ((O / satir) * entO) + ((C / satir) * entC)),2); listBox1.Items.Add(" " + YE + " " + YH + " " + AE + " " + AH + " " + OE + " " + OH + " " + CE + " " + CH + " /" + entY+ " " + entA + " " + entO+ " " + entC + "/ " + inf); return Math.Round(inf, 2); } public double cinsiyet() { double satir = dataGridView1.RowCount - 1; int KE = 0, KH = 0, EE = 0, EH = 0; double K = 0, E = 0; double inf; for (int i = 0; i < satir; i++) { if (dataGridView1.Rows

.Cells<7>

.Value.Equals("Kadın") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Evet")) KE++; else if (dataGridView1.Rows

.Cells<7>

.Value.Equals("Kadın") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Hayır")) KH++; else if (dataGridView1.Rows

.Cells<7>

.Value.Equals("Erkek") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Evet")) EE++; else if (dataGridView1.Rows

.Cells<7>

.Value.Equals("Erkek") && dataGridView1.Rows

.Cells<8>

.Value.Equals("Hayır")) EH++; } K = (KE + KH); E = (EE + EH); double entK = (K!=0)?Entropi(KE / K, KH / K):0; double entE = (E!=0)?Entropi(EE / E, EH / E):0; entropiler.Add(new Pojo("Cinsiyet", "erkek",entE)); entropiler.Add(new Pojo("Cinsiyet", "bayan",entK)); inf =Math.Round( (kriz() - ((K / satir) * entK) + ((E / satir) * entE)),2); listBox1.Items.Add(" " + KE + " " + KH + " " + EE + " " + EH + " /" + entK + " " + entE + "/ " + inf); return Math.Round(inf, 2); } public double Entropi(double P1, double P2) { double degerP1 = 0, degerP2 = 0; degerP1 = (P1 == 0) ? 0 : (P1 * Math.Log(P1, 2)); degerP2 = (P2 == 0) ? 0 : (P2 * Math.Log(P2, 2)); double entropi = - degerP1- degerP2; return Math.Round(entropi,2); } private void Form1_Load(object sender, EventArgs e) { cmbTansiyon.SelectedIndex = 0; cmbSigara.SelectedIndex = 0; cmbKriz.SelectedIndex = 0; cmbKilo.SelectedIndex = 0; cmbHastalik.SelectedIndex = 0; cmbCinsiyet.SelectedIndex = 0; cmbAmeliyat.SelectedIndex = 0; cmbAgri.SelectedIndex = 0; cmbYas.SelectedIndex = 0; } public List<KararAgaclari.Pojo> inflerim() { infler.Add(new KararAgaclari.Pojo("Tansiyon", tansiyon())); infler.Add(new KararAgaclari.Pojo("Sigara", sigara())); infler.Add(new KararAgaclari.Pojo("Yaş", yas())); infler.Add(new KararAgaclari.Pojo("Kilo", kilo())); infler.Add(new KararAgaclari.Pojo("Genetik mi", genetikmi())); infler.Add(new KararAgaclari.Pojo("Ameliyat var mı", ameyiyatgecirdimi())); infler.Add(new KararAgaclari.Pojo("Ağrı", agrivarmi())); infler.Add(new KararAgaclari.Pojo("Cinsiyet", cinsiyet())); for (int i = 0; i < infler.Count(); i++) { for (int j = i + 1; j < infler.Count(); j++) { if (infler

.Inf<infler

.Inf) { String tempad=infler

.Ad; double tempinf=infler

.Inf; infler

.Ad=(infler

.Ad); infler

.Inf=(infler

.Inf); infler

.Ad=(tempad); infler

.Inf=(tempinf); } } } return infler; } public void EntropiSirala() { for (int i = 0; i < entropiler.Count(); i++) { for (int j = i + 1; j < entropiler.Count(); j++) { if (entropiler

.Ent < entropiler

.Ent) { String tempad = entropiler

.Ad; String temptip = entropiler

.Tip; double tempent = entropiler

.Ent; entropiler

.Ad=(entropiler

.Ad); entropiler

.Ent=(entropiler

.Ent); entropiler

.Tip=(entropiler

.Tip); entropiler

.Ad=(tempad); entropiler

.Ent=(tempent); entropiler

.Tip=(temptip); } } } } } }

Uygulamanin Ekran Goruntusu;

                  Keyifli Calismalar Dilerim...

Recent Posts

See All
Oracle Java Cloud Service Uygulamasi

Bir onceki Oracle Cloud Computing yazisinda bahsettigim gibi JDeveloper Oracle Cloud icin gelistirmis oldugu surumu olan Oracle JDeveloper 11g (11.1.1.6.0) ile kucuk bir uygulama gelistirip bunu oracl

 
 
 
Oracle Cloud Computing Hakkinda

Bulut bilisim konusundaki arastirmalarima devam ederken bu kez solugu Oracle Cloud Computing'de aldim. Bu makalem ve ilerleyen makalelerimde Trial versiyonu ile user tarafini pek yormayan bir yapidan

 
 
 
Nested Parallel Loops

Matrix Multiplication / Matrix Carpma islemlerini OpenMP araciligi ile paralel alanda nasil yapilabilecegini incelerken ayni zamanda for construct'larin nested parallel loops alaninda nasil calistigin

 
 
 

Comments


©2035 by Sevdanur Genc. Powered and secured by Wix

bottom of page