C# 序列化weka模型不';行不通

C# 序列化weka模型不';行不通,c#,weka,xmlserializer,C#,Weka,Xmlserializer,我用c#中的weka编写了构建分类器的代码。为了存储下一个预测的分类器,我使用Serialize,如下所示: int percentSplit = 66; try { Instances insts = new Instances(new java.io.FileReader(@"C:\Users\...\Desktop\iris.arff")); insts.setClassIndex(insts.numAttributes() - 1); var cl = new

我用c#中的weka编写了构建分类器的代码。为了存储下一个预测的分类器,我使用Serialize,如下所示:

int percentSplit = 66;
try
{
    Instances insts = new Instances(new java.io.FileReader(@"C:\Users\...\Desktop\iris.arff"));
    insts.setClassIndex(insts.numAttributes() - 1);

    var cl = new weka.classifiers.functions.SMO();

    weka.filters.Filter myRandom = new weka.filters.unsupervised.instance.Randomize();
    myRandom.setInputFormat(insts);
    insts = weka.filters.Filter.useFilter(insts, myRandom);

    int trainSize = insts.numInstances() * percentSplit / 100;
    int testSize = insts.numInstances() - trainSize;
    Instances train = new Instances(insts, 0, trainSize);

    cl.buildClassifier(train);
    int numCorrect = 0;
    for (int i = trainSize; i < insts.numInstances(); i++)
    {
        Instance currentInst = insts.instance(i);
        double predictedClass = cl.classifyInstance(currentInst);
        if (Math.Abs(predictedClass - insts.instance(i).classValue()) < 0.001)
            numCorrect++;
        }
        XmlSerializer x = new XmlSerializer(typeof(weka.classifiers.functions.SMO));
        TextWriter writer = new StreamWriter(@"C:\Users\...\Desktop\SMO.model");
        x.Serialize(writer, cl);
        writer.Flush();
        writer.Close();
    }
}
int percentSplit=66;
尝试
{
Instances insts=新实例(新的java.io.FileReader(@“C:\Users\…\Desktop\iris.arff”);
insts.setClassIndex(insts.numAttributes()-1);
var cl=new weka.classifiers.functions.SMO();
weka.filters.Filter myRandom=新的weka.filters.unsupervised.instance.Randomize();
myRandom.setInputFormat(insts);
insts=weka.filters.Filter.useFilter(insts,myRandom);
int TRAINSSIZE=仪表numInstances()*百分比拆分/100;
int testSize=insts.numInstances()-列车尺寸;
实例列车=新实例(insts,0,列车大小);
cl.1(列车);
int numCorrect=0;
对于(int i=列车尺寸;i
当我运行此代码时,我在SMO.model文件中得到以下输出:

<?xml version="1.0" encoding="utf-8"?><SMO xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />


我想存储分类器,但我的代码不工作,问题是什么?我如何解决这个问题?

SMO类看起来怎么样?也许不需要使用XML序列化程序进行序列化?您可以查看BinaryFormatter,尽管我使用了本教程,基于本页,它是serializableAlright,但在这里,它们也使用二进制形式存储数据,而不是通过XmlSerializer。那么,您对我的代码的解决方案是什么?如何存储分类器模型?请尝试以下方法