在 Weka 中查找实例分类的概率

Posted

技术标签:

【中文标题】在 Weka 中查找实例分类的概率【英文标题】:Finding the probability with which an instance in classified in Weka 【发布时间】:2015-06-25 01:48:13 【问题描述】:

我正在使用 Weka 使用 LibSVM 分类器进行分类,并希望获得一些与我从评估模型获得的输出相关的帮助。

在下面的示例中,我的 test.arff 文件包含 1000 个实例,我想知道每个实例被分类为是/否的概率(这是一个简单的两类问题)。

例如,例如 1,如果它被归类为“是”,那么它被归类的概率是多少,是我正在寻找的东西。

下面是我目前拥有的代码sn-p:

            // Read and load the Training ARFF file 
        ArffLoader trainArffLoader = new ArffLoader();
        trainArffLoader.setFile(new File("train_clusters.arff"));
        Instances train = trainArffLoader.getDataSet();
        train.setClassIndex(train.numAttributes() - 1);
        System.out.println("Loaded Train File");

        // Read and load the Test ARFF file 
        ArffLoader testArffLoader = new ArffLoader();
        testArffLoader.setFile(new File("test_clusters.arff"));
        Instances test = testArffLoader.getDataSet();
        test.setClassIndex(test.numAttributes() - 1);
        System.out.println("Loaded Test File");


        LibSVM libsvm = new LibSVM();

        libsvm.buildClassifier(train);

        // Evaluation
        Evaluation evaluation = new Evaluation(train);
        evaluation.evaluateModel(libsvm, test);
        System.out.println(evaluation.toSummaryString("\nPrinting the Results\n=====================\n", true));
        System.out.println(evaluation.toClassDetailsString());

【问题讨论】:

【参考方案1】:

您应该使用libsvm.distributionForInstance 方法。它返回每个类索引的概率估计(在您的情况下为 2)。

例如,要打印测试集中每个实例的所有估计值,请使用以下内容:

    for (Instance instance : test) 
        double[] distribution = libsvm.distributionForInstance(instance);
        for (int classIndex : classIndices) 
            System.out.print(distribution[classIndex] + " ");
        
        System.out.println();
    

请注意,这不是真实的概率,而是 Platt 方法所做的估计(参见 question)。

【讨论】:

完美!它有助于。我必须做的唯一更改是从测试中获取实例,我使用 test.instance(index)。

以上是关于在 Weka 中查找实例分类的概率的主要内容,如果未能解决你的问题,请参考以下文章

Weka:如何获取测试实例的每个类的概率

使用 NaiveBayes 分类器对 Weka 中的一个实例进行分类

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

Weka中的实例分类

weka中新实例的分类

Weka中决策树和混淆矩阵中正确/错误分类实例之间的差异