Weka:如何找到属性的distince值?

时间:2017-01-03 05:23:51

标签: java weka

假设虹膜数据有3个唯一的类值。

@ATTRIBUTE class    {Iris-setosa,Iris-versicolor,Iris-virginica}

如何使用Weka API获取这些值?我能找到的最接近的是numDistinctValues(),我目前用作

System.out.println(data.numDistinctValues(data.numAttributes()-1));

然而,这只给出了不同数量的类,即3.我想得到实际值,即类标签“Iris-setosa,Iris-versicolor,Iris-virginica”。

我们可以使用Instances()找到不同的类值,方法是提取与每个实例对应的所有类标签,然后从中查找唯一值。是否有直接从ARFF格式的数据集描述中提取此信息的方法?

2 个答案:

答案 0 :(得分:2)

我找到了一个简单的解决方案

for (int i=0;i<data.classAttribute().numValues();i++) {
        System.out.println(data.classAttribute().value(i));
    }

基本上,我们在class属性中找到值的数量,然后迭代该数字以使用value()方法查找相应的值。

答案 1 :(得分:0)

对于数字属性,您可以使用此代码获取数据范围:

AttributeStats as = instances.attributeStats(index);
double min = as.numericStats.min;
double max = as.numericStats.max;