在 C# 代码中使用 SMO 分类器进行 Weka 预测



我通过IKVM使用Weka库,并且我已经为SMO构建了一个Weka资源管理器模型。现在我想用它来预测代码中未标记的数据(我已经用 J48 成功做到了)。

我像这样加载模型:

weka.classifiers.functions.SMO smo = (weka.classifiers.functions.SMO)SerializationHelper.read("C:\Users\lorenzov\Desktop\weka_files\Modelli\SMO_modello.model");

此代码适用于 J48:

  weka.core.Instances test = new weka.core.Instances(new java.io.FileReader("C:\Users\lorenzov\Desktop\weka_files\test.arff"));
        test.setClassIndex(5);
        // istanze da etichettare
        Instances labeled = new Instances(test);

        const int percentSplit = 66;
        int trainSize = test.numInstances() * percentSplit / 100;
        int testSize = test.numInstances() - trainSize;
        weka.classifiers.evaluation.Evaluation eval = new weka.classifiers.evaluation.Evaluation(test);
        eval.evaluateModel(cls, test);

        eval.evaluateModel(cls, test);
        for (int i = 0; i < test.numInstances(); i++)
        {
            weka.core.Instance currentInst = test.instance(i);
            test.instance(i).classValue();
            double predictedClass = cls.classifyInstance(currentInst);
            labeled.instance(i).setClassValue(predictedClass);
        }

如何使用 SMO 模型执行此操作?

您可以将分类器行替换为下面的分类器行。

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

最新更新