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