Java中RandomSubSpace分类器Weka API的输出



我在weka资源管理器中构建了一个RandomSubSpace分类器,现在正试图将其与weka Java API一起使用,然而,当我运行distributionforinstance()时,我得到一个数组,其中1.0作为第一个值,0.0作为所有其余的。我想要得到数值预测,而不是类。是否有一个不同的功能,我应该使用或对distributionForInstance不同的选项?下面的代码片段:

Classifier cls = (Classifier) weka.core.SerializationHelper。read("2015-09-6 Random Subspace Model.model");

Instances originalTrain = new DataSource("Instances.arff").getDataSet();

         int cIdx=originalTrain.numAttributes()-1;
         originalTrain.setClassIndex(cIdx);

         int s1=1;  

         double value=cls.classifyInstance(originalTrain.instance(s1));

         double[] percentage=cls.distributionForInstance(originalTrain.instance(s1));

         System.out.println("The predicted value of instance "+Integer.toString(s1) +"Value: " + percentage[1]); 
         System.out.println(Arrays.toString(percentage));

输出如下所示:实例1Value的预测值:0.0(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)

有人知道如何得到数值输出像我得到在weka资源管理器?

方法:
classif.distributionForInstance(instance);

返回每个不同类的实例成员资格概率的双数组。如果第一个元素得到1.0,其余元素得到0.0,这意味着算法对预测特定实例的第一个类非常有信心。其他时候,当成员关系不那么明确时,概率分布更均匀。

当您对实例进行分类时,我们将为您提供类属性的索引。你必须映射,这个值:

originalTrain.classAttribute().value((int) cls.classifyInstance(originalTrain.instance(s1))))

最新更新