2016-04-27 8 views
1

これはどのJavaオブジェクトにも適用できますが、機械学習、特にlibsvmのコンテキストで尋ねます。私は1つのライブJavaシステムで訓練されたSVMを持っています。この種のオブジェクトの状態を保存し、訓練されたオブジェクトを別のJavaシステムに移動するシステムを取得する方法はありますか?状態(訓練されたLIBSVM)を含むJavaオブジェクトの移植

ありがとうございます。

+1

私は確信していませんが、それはあなたが話しているオブジェクトのシリアル化ですか?もしそうなら、 https://docs.oracle.com/javase/tutorial/jndi/objects/serial.htmlをご覧ください。 – MGoksu

答えて

1

はい、いくつかの方法があります。あなたがObjectInputStreamを使用modelを、デシリアライズするには

import java.io.*; 
public class SerializeSVMModel { 

    public static void main(String [] args) { 

    // Set up your SVM model 
    svm_model model = svm_train(...); 
    // ... 

    try { 

     FileOutputStream fileOutputStream = new FileOutputStream("c:/svm/serialized_svm_model.ser"); 
     ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream); 

     // Writes the object 
     objectOutputStream .writeObject(model); 

    } catch(IOException e) { 
     e.printStackTrace(); 
    } finally { 
     if (objectOutputStream != null) { 
      objectOutputStream.close(); 
     } 
    } 

} 

}

:最も簡単にはObjectOutputStreamと、このような訓練を受けたsvm_modelをシリアル化することです。

別の方法は、Java Architecture for XML Binding (JAXB)を使用することです。この場合、svm_modelのフィールドにアクセスできるようにラッパークラスを作成する必要があります。これは、アノテーションをマークする必要があるためです。人間が読めるXML出力ファイルやその他のカスタム形式があるため、このアプローチは優れています。しかし、これ以上の読み方が必要です。

関連する問題