移植包含状态的Java对象(训练过的LIBSVM)
这在很大程度上可以应用于任何Java对象,但我在机器学习的背景下,特别是在libsvm中提出这一问题。我在一个实时Java系统上训练了一个SVM。有没有办法让系统保存这类对象的状态并将经过训练的对象移动到另一个Java系统移植包含状态的Java对象(训练过的LIBSVM),java,oop,object,machine-learning,libsvm,Java,Oop,Object,Machine Learning,Libsvm,这在很大程度上可以应用于任何Java对象,但我在机器学习的背景下,特别是在libsvm中提出这一问题。我在一个实时Java系统上训练了一个SVM。有没有办法让系统保存这类对象的状态并将经过训练的对象移动到另一个Java系统 谢谢。是的,有几种方法。最简单的方法是使用ObjectOutputStream像这样序列化经过训练的svm\u模型: import java.io.*; public class SerializeSVMModel { public static void main
谢谢。是的,有几种方法。最简单的方法是使用
ObjectOutputStream
像这样序列化经过训练的svm\u模型:
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();
}
}
}
}
要反序列化模型
,请使用ObjectInputStream
另一种方法是使用。在这种情况下,您需要编写一个包装器类,以便能够访问svm_model
的字段,因为您需要用注释标记它们。这种方法更好,因为您有一个可读的XML输出文件或其他自定义格式。但是,您需要进一步阅读。我不确定,但您所说的是对象序列化吗?如果是这样,你可能想看看