Membuat Model Klasifikas Menggunakan Java


Penelitian yang saya lakukan menghasilkan sebuah sistem cerdas yang mampu mengklasifikasikan citra sidik jari. Kecerdasan yang dimiliki komputer, diperoleh melalaui proses training, yang kemudian melahirkan sebuah model (mesin, otak, knowledge) sehingga sistem bisa menentukan jenis sidik jari. Proses training akan melahirkan model, model ini harus dapat disimpan(serialized) agar dapat digunakan kembali untuk memroses data yang diberikan user, sehingga proses training hanya dilakukan sekali saja ketika membangun model di awal. Jika sebuah data citra masuk, sistem akan mengcompile model (deserialized) sehingga model dapat hidup dan mampu bekerja. Download program lengkap, ModelSerialize.java

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import weka.classifiers.Classifier;
import weka.classifiers.functions.SMO;
import weka.core.Instances;

/**
 *
 * @author Windu Purnomo
 */
public class ModelSerialize {
    /**
     *
     * @param arffTraining path file arff untuk proses training
     * @param pathOutputModel path file model (*.model) untuk menyimpan model dalam bentuk file biner
     * @throws IOException
     * @throws Exception
     */
    public static void serializeSMO(String arffTraining, String pathOutputModel) throws IOException, Exception{
        //Membuat classifier (ex: SMO)
        Classifier smo = new SMO();
        smo.setOptions(weka.core.Utils.splitOptions(
                    "-C 1.0 -L 0.0010 -P 1.0E-12 -N 0 -V -1 -W 1 "
                    + "-K \"weka.classifiers.functions.supportVector.RBFKernel -C 250007 -G 0.01\""));

        //Training
        Instances instance = new Instances(
                new BufferedReader(new FileReader(arffTraining)));
        instance.setClassIndex(instance.numAttributes()-1);
        smo.buildClassifier(instance);

        //simpan model ke file
        ObjectOutputStream oos = new ObjectOutputStream(
                            new FileOutputStream(pathOutputModel));
        oos.writeObject(smo);
        oos.flush();
        oos.close();
    }

    /**
     *
     * @param pathModel path file model untuk dibuka
     * @return pengembalian adalah classifier smo, hasil deserialisasi model
     * @throws IOException
     * @throws ClassNotFoundException
     */
    public static Classifier deserializeSMO(String pathModel) throws IOException, ClassNotFoundException{
        //deserialize model, membuka model
        ObjectInputStream ois = new ObjectInputStream(
                           new FileInputStream(pathModel));
        Classifier smo = (Classifier) ois.readObject();
        ois.close();
        return smo;
    }

    public static void main(String[] args) throws IOException, Exception {
        String arff = "/home/hapshoh/iris.arff";
        String model = "/home/hapshoh/smo.model";
        ModelSerialize.serializeSMO(arff, model);
        Classifier smo = ModelSerialize.deserializeSMO(model);
        System.out.println("Classifier smo siap digunakan.");
    }
}

About windupurnomo

I'm interested in programming. I am active with several programming such as Java, C #, C, JavaScript, HTML. I'm also develop desktop application (Java Swing), Mobile Application (Android), and Web programming (ASP MVC).
This entry was posted in Kuliah and tagged , , , , , , , , . Bookmark the permalink.

6 Responses to Membuat Model Klasifikas Menggunakan Java

  1. zaki says:

    waw thanks windu. Mau integrasi ke weka tinggal import aja ya? soalnya weka emang pake java sih ngembanginnya. ntar bantu saya ndu kalo ada kesulitan ya? mau memperdalam java juga =))

  2. windupurnomo says:

    Ya, tinggal di import aja. Lebih flexibel, daripada kita pake GUI nya dari weka. Insya Alloh, klo sy bisa bantu.

  3. weni says:

    windu makasih contoh program nya..btw ada ga contoh program yang menggunkan metode hybrid untuk sidik jari??

  4. sofia says:

    MAU TANYA DONK MAS….
    kalo bikin aplikasi unlocker buat hp pake java bisa ga c?

  5. asriel says:

    ini cara kerja programe gimana mas??kog simple banget cuma satu class saja..

    • windupurnomo says:

      Di sini saya menggunakan library Weka untuk proses training dan pembetnukkan modelnya. Seperti diketahui, dalam library Weka (*.jar) itu terdapat banyak banget class Java. Class2 itulah yang bekerja untuk melakukan proses training dan kemudian kita mendapatkan modelnya. Sedangkan class yang saya buat ini, adalah yang menkoordinir, kelas mana saja yang akan dipake dari library Weka. Comment yang saya berikan di sourcecode cukup menjelaskan fungsi dari setiap bagiannya.

Leave a reply to zaki Cancel reply