首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >验证实例与Weka分类器的兼容性

验证实例与Weka分类器的兼容性
EN

Stack Overflow用户
提问于 2016-01-05 14:11:53
回答 2查看 295关注 0票数 2

我需要构建一个韦卡分类器,然后使用它来预测未来的实例。这里。是一个很好的入门源,不幸的是,我注意到未来的实例不需要匹配源培训数据的格式。

如何预测训练数据和新实例之间的差异?

火车示例:

@relation @属性A1 {e,f,g} @属性A2数值 @属性A3数值 @属性A4 {正,负}@数据 e,-100,100,正 f,-10,10,正 g,-90,90,阴性

示例测试:

@关系检验 @属性B1 {b,a} @属性B2数值 @属性B3 {好的,坏的}@数据 b,100,很好 a,10,不好 b,90,很好

如果保存上述培训和测试数据集,则可以使用以下代码来确保构建在培训数据上的模型能够从测试数据中对实例进行分类。

代码语言:javascript
复制
import java.io.BufferedReader;
import java.io.FileReader;
import weka.classifiers.Classifier;
import weka.classifiers.bayes.NaiveBayes;
import weka.core.Instances;

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

        //
        // Load train data
        // 
        String readTrain = "someWhere/train.arff";
        BufferedReader readerTrain = new BufferedReader(new FileReader(readTrain));
        Instances train = new Instances(readerTrain);
        readerTrain.close();
        train.setClassIndex(train.numAttributes() - 1);         

        //
        // Load test data
        // 
        String readTest = "someWhere/test.arff";
        BufferedReader readerTest = new BufferedReader(new FileReader(readTest));
        Instances test = new Instances(readerTest);
        readerTest.close();
        test.setClassIndex(test.numAttributes() - 1);  

        // Create a naïve bayes classifier
        Classifier cModel = (Classifier)new NaiveBayes();
        cModel.buildClassifier(train);

        // Predict distribution of instance
        double[] fDistribution = cModel.distributionForInstance(test.instance(2));
        System.out.println("Prediction class 1: " + fDistribution[0]);
        System.out.println("Prediction class 2: " + fDistribution[1]);
    }
}

对于如何使用不同的数据源进行预测的任何解释,或者使新实例与分类器原始培训数据的格式相匹配的想法,都是值得赞赏的。但是,我不想依赖于评价课

EN

回答 2

Stack Overflow用户

发布于 2016-10-18 21:55:09

我知道这个问题很老,但我的回答可能会对其他人有所帮助。

Instances.equalHeaders(Instances)方法是您要寻找的方法。如果trueInstances兼容,或者false不兼容,则返回false

票数 1
EN

Stack Overflow用户

发布于 2016-01-06 21:18:55

您可以测试一个新的实例与用于构建分类器的数据集(如果是trainset.checkInstance(yourInstance) )。这就保证了兼容性。如果训练集太大,您可以通过过滤来执行它的子示例。这样,您就可以测试任何新实例是否符合分类器的要求。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34613691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档