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



我在Weka中有以下稀疏ARFF文件——我想使用Weka Java API从给定的稀疏ARFF(训练数据集)文件中构建一个分类器。程序正在读取文件[未引发任何异常],但无法读取实例。当我打印实例数时,程序打印为0。提前感谢您的投入。

@关系样本

@属性T1数字

@属性T2数字

@属性T3数字

@属性T4数字

@属性T5数字

@属性C1{0,1}

@数据

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

{3 3,4 2,6 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());    

我认为您的稀疏数据在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());
    }
}

最新更新