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

Posted

技术标签:

【中文标题】Weka - 如何在 Java 中使用分类器【英文标题】:Weka - How to use classifier in Java 【发布时间】:2015-10-03 00:34:33 【问题描述】:

我在 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();

该文件仅包含一个实例。类属性的值为'?'。 通过下面的代码,我尝试对实例进行分类。

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();
            

这样是对的吗?

【问题讨论】:

你检查过weka网站上的例子吗? weka.wikispaces.com/Use+WEKA+in+your+Java+code 【参考方案1】:

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

yourClassifier.distributionForInstance(yourInstance);

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

【讨论】:

【参考方案2】:

在此处查看带有幻灯片和文本数据集的 Java 代码。它训练机器,加载模型并对实时看不见的文本数据进行分类。很容易跟上 https://github.com/drelhaj/MachineLearning

【讨论】:

以上是关于Weka - 如何在 Java 中使用分类器的主要内容,如果未能解决你的问题,请参考以下文章

Weka - 如何查找分类器的输入格式

如何在 Weka 分类器中使用 svm?

如何在 Weka Explorer 中应用分类器?

如何在我的 Java 代码中使用带有 Weka 的 LibSVM?

如何在 Weka 中构建 SVM 分类器以仅考虑数据集中的某些特征?

如何提高 Weka 中 SMO 分类器的性能?