2015-02-10 23 views
1

我已经在smo中训练svm模型并使用SerializationHelper将其写入文件。阅读已训练SMO模型给StreamoutofException错误

当我尝试读取模型进行分类它提供了以下错误:

Problem found: java.io.StreamCorruptedException: invalid stream header: 47656E65

下面是给出了错误行:

classifier = (Classifier) SerializationHelper.read(strModel); 

编辑:

Instances inst = Filter.useFilter(data, vectorizer); 
    inst.setClassIndex(0); 
    SMO svm = new SMO(); 
    RBFKernel kernal = new RBFKernel(); 
    svm.setKernel(kernal); 
    svm.buildClassifier(filteredDate); 
    SerializationHelper.write("SMO_samp.model", svm); 
+0

你是怎么保存模型?任何代码片段都很好。 – 2015-02-11 05:23:46

+0

嗨拉什迪假设我已编辑我的帖子上面插入的代码.. – 2015-02-11 07:40:45

回答

0

对于该错误,this可能会有所帮助。

这是一个完全工作示例:

import java.io.BufferedReader; 
import java.io.FileReader; 
import java.util.Random; 
import weka.classifiers.Classifier; 
import weka.classifiers.Evaluation; 
import weka.classifiers.bayes.NaiveBayes; 
import weka.classifiers.functions.LibSVM; 
import weka.classifiers.functions.SMO; 
import weka.core.Instances; 
import weka.core.SerializationHelper; 


public class CodeTest { 

    public static void main(String[] args) throws Exception{ 

     BufferedReader breader = null; 
     breader = new BufferedReader(new FileReader("iris.arff")); 

     Instances train_data = new Instances (breader); 
     breader.close(); 
     train_data.setClassIndex(train_data.numAttributes() -1); 

     SMO smo = new SMO(); 
     smo.buildClassifier(train_data); 

     SerializationHelper s = new SerializationHelper(); 
     s.write("SMO_samp.model", smo); 
     Classifier c = new SMO(); 
     c = (Classifier) s.read("SMO_Samp.model"); 
     Evaluation evaluation = null; 
     evaluation = new Evaluation (train_data); 
     evaluation.crossValidateModel(c, train_data, 10, new Random(1)); 
     System.out.println(evaluation.toSummaryString()); 
    } 
} 
+0

谢谢拉什迪假装它帮助了很多..esides可以告诉如何分类新实例(预测新的摘要)。如果你给我使用标记器的例子,并使用字符串向量词和过滤器选项 – 2015-02-12 05:53:19