Kamis, 04 September 2014

Java-Kohonen

UPDATE: 01 FEBRUARI 2019
BAHASA: JAVA
SYSTEM:
a.    Windows 10
b.    NetBeans IDE 8.0.2 (Build 201411181905)
c.    Java: 1.8.0_111; Java HotSpot(TM) 64-Bit Server VM 25.111-b14

PENGANTAR:

Kohonen merupakan salah satu cabang dari jaringan syaraf buatan yang digunakan untuk proses klustering. Jika anda pernah menggunakan Kmean klustering, maka kohonen mempunyai cara kerja yang sama, hanya saja berbeda cara melakukan proses update. Kmeans menggunakan istilah centroid sedangkan kohonen menggunakan istilah bobot. Karena aplikasi menggunakan nilai bobot yang random maka hasil nya pun bisa berbeda-beda. Agar mempermudah dalam mengoperasikan nya, dilengkapi dengan proses

DATASET:

Berikut contoh dataset yang kita gunakan, terdiri 2 parameter saja X dan Y



Misalkan kita akan membuat 3 cluster dengan masing-masing cluster mempunyai anggota minimal 2

double[][]  dataInput = new double[][]{
 {7, 8}, 
 {8, 8}, 
 {9, 8}, 
 {8, 7},
 {8, 9},
 {1, 3},
 {3, 1},
 {5, 3},
 {3, 5},
 {2, 13},
 {3, 13},
 {4, 13},
 {3, 12},
 {3, 14}};

Kemudian membuat bobot secara random

//membuat bobot terdiri dari 
// 2 baris atau 2 paramater
// 3 kolom atau 3 kelas group
int jumlahParamater = 2;
int jumlahKluster = 3;
int jumlahMinimalAnggota = 2;
double [][] bobot  = new double[jumlahParamater][jumlahKluster];
for(int i=0;i<bobot.length;i++)
{
 for(int j=0;j<bobot[0].length;j++)
 {
  bobot[i][j]= rand();
 }
}

Sesi pencarian kelas

Kohonen k = new Kohonen(dataInput, bobot,jumlahKluster); //setup
k.setJumlahMinimal(jumlahMinimalAnggota);
double [][]bobotAkhir = k.pelatihan(dataInput,bobot); //proses latih
boolean status = k.pengujian(dataInput,bobotAkhir);
if(status)
{
 int [][]info = k.getInformasiKohonen();
 int []id = k.getIdAnggota();
 System.out.println("Hasil");
 for (int i=0;i<info.length;i++)
 {
    System.out.println("ID : "+info[i][0]+" anggota: "+info[i][1]);
 }
 System.out.println("Bobot Akhir");
 for (int i=0;i<bobotAkhir.length;i++)
 {
    for(int j=0;j<bobotAkhir[0].length;j++)
    {
     System.out.print(bobotAkhir[i][j]+", ");
    }
    System.out.println("");

 }
 System.out.println("Hasil Akhir");
 for(int i=0;i<dataInput.length;i++)
 {
  for(int j=0;j<dataInput[0].length;j++)
  {
   System.out.print(dataInput[i][j]+" ");
  }
  System.out.print("--> "+id[i]+1);
  System.out.println("");
 }
}else
{
 System.out.println("Run lagi!");
}

Output

Hasil
ID : 1 anggota: 5
ID : 2 anggota: 4
ID : 3 anggota: 5
Bobot Akhir
8.0512, 3.3716, 3.0512, 
8.5243, 4.3443, 13.5243, 
Hasil Akhir
7.0 8.0 --> 1
8.0 8.0 --> 1
9.0 8.0 --> 1
8.0 7.0 --> 1
8.0 9.0 --> 1
1.0 3.0 --> 2
3.0 1.0 --> 2
5.0 3.0 --> 2
3.0 5.0 --> 2
2.0 13.0 --> 3
3.0 13.0 --> 3
4.0 13.0 --> 3
3.0 12.0 --> 3
3.0 14.0 --> 3

Pustaka


Kode Kohonen tidak memerlukan library tambahan karena ditulis sendiri.

Tidak ada komentar: