Weka - 如何在Java中使用分类器

时间:2015-07-14 11:36:58

标签: java machine-learning classification weka

我在Weka Explorer中创建了一个模型,并将其保存为.model文件

首先,我从我的Java代码

加载已保存的模型
Classifier cls = null;
    try {
        cls = (Classifier) weka.core.SerializationHelper.read("Model.model");
    } catch (Exception e1) {
        e1.printStackTrace();
    }

然后,我从.arff文件中读取了我想要分类的实例

 BufferedReader reader = new BufferedReader(new FileReader(file));
 ArffReader arff = new ArffReader(reader);
 Instances data = arff.getData();

该文件只包含一个实例。 class属性的值是'?'。 使用下面的代码,我尝试对实例进行分类。

data.setClassIndex(data.numAttributes()-1);
            try {

                double value=cls.classifyInstance(data.firstInstance());

                String prediction=data.classAttribute().value((int)value); 

                System.out.println("The predicted value of instance "+
                                    Integer.toString(s1)+
                                    ": "+prediction); 
            } catch (Exception e) {
                e.printStackTrace();
            }

这是正确的方法吗;

2 个答案:

答案 0 :(得分:1)

这是一个正确的代码示例,可以执行您希望它执行的操作。另一个有用的方法是:

yourClassifier.distributionForInstance(yourInstance);

返回一个double [],其中包含每个类标签的实例概率。它对于不太明显的问题很有用,其中类成员可能是一个模糊的概念。

答案 1 :(得分:0)

请参阅此处包含幻灯片和文本数据集的Java代码。它训练机器,加载模型并对实时看不见的文本数据进行分类。很容易遵循 https://github.com/drelhaj/MachineLearning