weka
Akhir-akhir ini saya sedang bermain-main dengan Weka, baik versi GUI ataupun library untuk menggunakan fungsi-fungsi Weka (Instances, Filter, Classification, Clustering, dll). Supaya tidak lupa saya akan menuliskan satu persatu penggunaan library Weka (weka-3.7.3.jar) yang sudah pernah saya lakukan.
Weka dalam penggunaannya menggunakan file ARFF (Attribute-Relation File Format) adalah file yang digunakan Weka yang berisi 1 atau lebih instances dari atribut. Dalam file ARFF biasanya terdapat @RELATION namarelasi untuk menamakan relasi sebuah file ARFF, @ATTRIBUTE untuk penamaan setiap atribut baik numeric, nominal, string dan date. sedangkan @DATA pada setiap line untuk merepresentasikan sebuah instances. (Penjelasan lengkapnya ada disini).
Langkah pertama yang terpenting dalam Weka adalah membaca file ARFF / membuat instances sebelum akan diproses klasifikasi, kluster atau hal lainnya.

Membaca File ARFF

              import weka.core.Instances;  import java.io.BufferedReader;  import java.io.FileReader;  ...  // Membaca file iris.arff menggunakan BufferedReader  BufferedReader reader = new BufferedReader(new FileReader("/data/iris.arff"));   // Membuat Instances dengan data dari file iris.arff  Instances data = new Instances(reader);  reader.close();  // Set Class Index untuk memberitahu kelas dari target, yang akan digunakan klasifikasi. kelas target berada pada atribut terakhir.  data.setClassIndex(data.numAttributes() - 1);            

File iris.arff dapat ditemukan pada folder Weka\data.

Membuat Instances format ARFF

Sedangkan untuk membuat sebuah instances berikut contoh untuk dataset iris :

public void makeInstance() { 		// Membuat Attribute List 		ArrayList<Attribute> attributeList = new ArrayList<Attribute>(5);                  // Membuat 4 Attribute 		Attribute sepallength= new Attribute("sepallength"); 		Attribute sepalwidth= new Attribute("sepalwidth"); 		Attribute petallength= new Attribute("petallength"); 		Attribute petalwidth= new Attribute("petalwidth");                  // Membuat attribute kelas target 		ArrayList<String> classVal = new ArrayList<String>(2); 		classVal.add("Iris-setosa"); 		classVal.add("Iris-versicolor"); 		classVal.add("Iris-virginica");  		// Memasukkan Attribute ke Attribute List 		attributeList.add(sepallength); 		attributeList.add(sepalwidth); 		attributeList.add(petallength); 		attributeList.add(petalwidth); 		attributeList.add(new Attribute("class", classVal));  		// Instances baru dengan nama relasi "iris" dengan atributList dan index 0 		Instances instances = new Instances("iris", attributeList, 0);  		// Set Class Index untuk memberitahu kelas dari target, yang akan digunakan klasifikasi. kelas target berada pada atribut terakhir. 		instances.setClassIndex(instances.numAttributes() - 1); 		 		// Membuat dan tambah kan Attribute ke instance 		Instance inst_co = new DenseInstance(instances.numAttributes()); 		 		// Men set nilai dari Attribute: 		inst_co.setValue(sepallength, 6.9); 		inst_co.setValue(sepalwidth, 3.1); 		inst_co.setValue(petallength, 5.1); 		inst_co.setValue(petalwidth, 2.3);  		//menambahkan instances dari instance inst_co 		instances.add(inst_co); 		System.out.println("===== Instance dataset ====="); 		System.out.println(instances); 	}            

Hasil dari instances yang dibuat manual :

@relation iris  @attribute sepallength numeric @attribute sepalwidth numeric @attribute petallength numeric @attribute petalwidth numeric @attribute class {Iris-setosa,Iris-versicolor,Iris-virginica}  @data 6.9,3.1,5.1,2.3,?            

Menyimpan instance ke file arff

Anda dapat menyimpan instances yang sudah di buat ke file arff dengan menggunakan fungsi BufferedWriter di java.

              BufferedWriter writer = new BufferedWriter(new FileWriter("data/iris_create.arff"));  writer.write(instances.toString());  writer.flush();  writer.close();            

Sekarang cukup mudah bukan membuat sebuah instances baru melalui java. thx weka wikispaces 😀
Berikut file source code dan library sudah saya upload ke github.

References :

– http://weka.wikispaces.com/ARFF+%28stable+version%29
– http://weka.wikispaces.com/Use+WEKA+in+your+Java+code#Instances-ARFF%20File
– http://weka.wikispaces.com/Programmatic+Use
– http://weka.wikispaces.com/Save+Instances+to+an+ARFF+File

Print Friendly, PDF & Email