建模和阅读WEKA中的稀疏ARFF文件

时间:2015-02-04 09:24:46

标签: weka arff

我在Weka中有以下稀疏ARFF文件 - 我想使用Weka Java API从给定的稀疏ARFF文件(训练数据集)构建分类器。该程序正在读取文件[不抛出任何异常]但无法读取实例。当我打印实例数时 - 程序打印为0.提前感谢输入。

@RELATION ample

@ATTRIBUTE T​​1数字

@ATTRIBUTE T​​2数字

@ATTRIBUTE T​​3数字

@ATTRIBUTE T​​4数字

@ATTRIBUTE T​​5数字

@ATTRIBUTE C1 {0,1}

@DATA

{0 3 1,2 2 2,1 1 6}

{3 3,4 2,4 0}

ArffLoader loader = new ArffLoader();    
loader.setFile(new File("C:\\SAMPLE-01.arff"));    
Instances data = loader.getStructure();    
data.setClassIndex(data.numAttributes() - 1);    
System.out.println("Number of Attributes : " + data.numAttributes());    
System.out.println("Number of Instances : " + data.numInstances());    

1 个答案:

答案 0 :(得分:0)

我相信您的稀疏数据未在ARFF文件中正确格式化。它应该是这样的:

@RELATION ample
@ATTRIBUTE T1 numeric
@ATTRIBUTE T2 numeric
@ATTRIBUTE T3 numeric
@ATTRIBUTE T4 numeric
@ATTRIBUTE T5 numeric
@ATTRIBUTE C1 {0, 1}

@DATA
{0 3, 1 2, 2 1, 5 1}
{3 3, 4 2, 5 0}

然后你可以使用一个看起来像我的类:

public class SO_Test {
    DataSource source = null;
    Instances data = null;
    public void setDataset(String trainingFile){
        try {
            source = new DataSource(trainingFile);
        } catch (Exception e) {
            e.printStackTrace();
        }

        try {
            data = source.getDataSet();
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (data.classIndex() == -1)
            data.setClassIndex(data.numAttributes() - 1);
    }
    public static void main(String[] args) throws Exception{
        SO_Test s = new SO_Test();
        s.setDataset("1.arff");
        System.out.println("Number of Attributes : " + s.data.numAttributes());    
        System.out.println("Number of Instances : " + s.data.numInstances());
    }
}