Laman

Rabu, 08 Januari 2014

Algoritma K-means di C# (C Sharp) Review Framework Accord untuk K-Means

Apa itu algoritma K-Means?. dalam bahasa yang sederhana dan mudah di pahami K-Means adalah sebuah algoritma yang digunakan untuk proses clustering maupung proses klasifikasi berdasarkan jarak suatu data dengan rata-rata dataset itu sendiri. Akan tetapi disini tidak akan membahas detail tentang algoritma K-Means maupun step by step dari K-means.
Pada tutorial ini yang akan dibahas adalah bagaiamana cara mengimplementasikan framework accord untuk mengcluster dataset. Di file dokumentasi dari accord sendiri sudah memberikan contoh bagaimana membaut algoritma k-means. pada studi kasus yang dibahas kali ini adalah clustering/pengelompokan data mahasiswa berdasarkan nilai semester 1, semester 2 dan semester 3. 


Langkah pertama: jalankan IDE Visual studio, dan siapkan project form baru. 
Langkah kedua : tambahkan beberapa komponen seperti satu datagridview, satu button, satu numericupdown dan juga sebuah label. atur dan tata sedemikian rupa sehingga tampilannya seperti pada gambar dibawah ini


langkah ketiga : lakukan add reference file dll accord.math.dll dan juga aforge.dll. sedangkan cara untuk cara melakukan add reference ke sebuah project ada di sini. selanjutnya tambahkan code program ini 


using Accord.MachineLearning;
using AForge;




langkah ke empat adalah menambahkan code program. 

        int[] hasilCluster;
        double[][] data =
        {
            new double[] {  60,  90,  75  },
            new double[] {  60,  65,  60  },
            new double[] {  75,  80,  90  },
            new double[] {  95,  95,  100 },
            new double[] {  70,  65,  70  },
            new double[] {  80,  60,  65  },
            new double[] {  90,  65,  70  },
            new double[] {  70,  70,  50  },
            new double[] {  50,  60,  70  },
            new double[] {  65,  90,  50  },
        };

maksud dari potongan diatas adalah kita membentuk dua variabel, yaitu variabel hasilCluster dan juga variabel data. Dimana pada variabel hasilCluster digunakan untuk menyimpan hasil dari proses cluster, data tersebut masuk kelas 0, kelas 1, kelas 2, kelas 3, kelas 4, dan seterusnya.  sedangkan pada variabel data adalah variabel yang digunakan untuk menyimpan semua data yang akan diproses cluster, dalam hal ini data tersebut adalah data mahasiswa A s.d mahasiswa J

tambahkan juga code program yang digunakan untuk menampilkan data yang sudah kita simpan


   private void showData()
   {           
      dataGridView1.ColumnCount = 4;
      dataGridView1.RowHeadersWidth = 120;
      dataGridView1.Columns[0].Width = 70;
      dataGridView1.Columns[1].Width = 70;
      dataGridView1.Columns[2].Width = 70;
      dataGridView1.Columns[3].Width = 80;
      dataGridView1.Rows.Clear();
      dataGridView1.Rows.Add(data.Length);
      dataGridView1.Rows[0].HeaderCell.Value = "Mahasiswa A";
      dataGridView1.Rows[1].HeaderCell.Value = "Mahasiswa B";
      dataGridView1.Rows[2].HeaderCell.Value = "Mahasiswa C";
      dataGridView1.Rows[3].HeaderCell.Value = "Mahasiswa D";
      dataGridView1.Rows[4].HeaderCell.Value = "Mahasiswa E";
      dataGridView1.Rows[5].HeaderCell.Value = "Mahasiswa F";
      dataGridView1.Rows[6].HeaderCell.Value = "Mahasiswa G";
      dataGridView1.Rows[7].HeaderCell.Value = "Mahasiswa H";
      dataGridView1.Rows[8].HeaderCell.Value = "Mahasiswa I";
      dataGridView1.Rows[9].HeaderCell.Value = "Mahasiswa J";
          dataGridView1.Columns[0].HeaderText = "Nilai semester 1";
      dataGridView1.Columns[1].HeaderText = "Nilai semester 2";
      dataGridView1.Columns[2].HeaderText = "Nilai semester 3";
     dataGridView1.Columns[3].HeaderText = "Kelompok mahasiswa ?";
      for (int i=0;i<data.Length;i++)
         {               
             dataGridView1[0,i].Value =data[i][0].ToString();
             dataGridView1[1,i].Value =data[i][1].ToString();
              dataGridView1[2,i].Value =data[i][2].ToString();
         }         
   }

 potongan code diatas digunakan untuk menampilkan data ke datagirdview. sekarang tambahkan inti utama dari algoritma K-Means Menggunakan accord


KMeans oKmeas = new KMeans(Convert.ToInt16(numericUpDown1.Value));
           hasilCluster = oKmeas.Compute(data);
           for(int i=0;i<hasilCluster.Length;i++)
           {
               dataGridView1[3, i].Value = hasilCluster[i].ToString();
           }

KMeans adalah kelas yang telah disediakan oleh framework accord, sehingga untuk menggunakannya kita hanya perlu melakukan pembentukan object. 


KMean oKmeans=new Kmeans(parameter/argumen yang)
 
Sedangkan parameter atau argumen adalah sebuah tipe data integer, dimana parameter ini digunakan untuk membetuk jumlah cluster yang kita inginkan. misalnya dari sekelompok data mahasiswa yang berjumlah 10 ingin dilakukan proses cluster menjadi 3 kelompok, maka source codenya seperti dibawah ini 


KMean oKmeans=new Kmeans(3)
 
ketika code program oKmeans.Computer(data) di jalankan maka akan mengembalikan nilai sebuah array yang isinya adalah isi dari anggota class data tersebut. sehingga hasilCluster=oKmeas,Compute(data) adalah sebuah proses menjalankan KMeans dan memberikan nilai balik berupa indek anggota kelompok masing-masing data yang disimpan di variabel hasilCluster. perulangan for digunakan untuk menampilkan kembali ke datagird hasil dari proses clustering.

Jika semua langkah-langkah diatas dilakukan dengan benar. maka hasil running dari program seperti gambar berikut ini

Hasil Running 1. Ketika program dijalankan pertama kali



Hasil Running 2.  Ketika button k-Mean di klik dan jumlah clus yang di set adalah 1


Dari gambar preview running program diatas, terlihat bahwasanya dari mahasiswa A s.d mahasiswa J jiak dilakukan proses cluster dengan jumlah cluster 1, semua mahasiswa masuk kedalam kelas 0, yang artinya semua mahasiswa menjadi satu kelompok,

Hasil Running 3. Ketika button k-Mean di klik dan jumlah clus yang di set adalah 2

  
Dari hasil running diatas terlihat, bahwa dengan mengganti jumlah class, hasil yang didapat setelah proses clastering pun berbeda, ini dilihat dari kolom "kelompok mahasiswa"  dimana ada yang bernilai 0 dan juga ada yang bernilai 1, maksudnya adalah dari mahasiswa A s.d mahasiswa J dibagi menjadi dua kelompok. pembagian kelompok berdasarkan nilai semester 1 dan semester 2. mahasiswa A,C,D adalah mahasiswa dalam satu kelompok, mahasiswa B,E,F,G,H,I,J juga dalam satu kelompok.

Hasil Running 4. Ketika button k-Mean di klik dan jumlah clus yang di set adalah3

hasil diatas menunjukan bahwa dengan jumlah clas yang bebeda, hasil dari cluster nya pun juga ikut berubah. A,B,I,J menjadi satu kelas, mahasiswa C dan D menjadi satu kelas, kelas E,F,G,dan H menjadi satu kelompok. dengan demikian mempunyai arti bahwa mahasiswa A,B,I,J mempunyai karakteristik yang mirip, begitu juga C,D mempunyai karakteristik yang sama, E,F,G,H juga mempunyai karakteristik yang mirip. bisa dikatakan bahwa kelompok yang berlabel 2 adalah mahasiswa yang nilainya menengah, mahasiswa yang berlabel 0 adalah mahasiswa dengan nilai yang kurang, sedangkan mahasiswa yang berlabel 1 adalah mahasiswa yang nilainya cukup bagus.

untuk mempermudah dalam mempelajari project ini silahkan download full projectnya 
mediafire: http://adf.ly/bnCfS
4shared : http://adf.ly/bnCHn
ziddu    : http://adf.ly/bnCRg

ditinggalkan komen jika link sudah tidak aktif

Artikel Terkait

15 komentar:

  1. Mohon bantuan untuk kedepan nya :D saya pakai program ini

    BalasHapus
  2. ada program c4.5 gak? klo ada boleh minta sebagai bahan refrensi... andikasant@gmail.com ini email saya

    BalasHapus
  3. Terimakasih gan, http://www.csharp-indonesia.com , memang sangat membantu saya.

    BalasHapus