如何将arff文件转换为矩阵

时间:2019-03-31 13:34:57

标签: java data-mining arff

我有arff文件需要转换为矩阵。我已经将文件转换为数组,但无法将其转换为矩阵。有人可以帮忙吗? 下面有我用来将数据转换为数组的代码

BufferedReader reader = new BufferedReader(new FileReader("colon.arff"));
       ArffReader arff = new ArffReader(reader);
     Instances data = arff.getData();
     data.setClassIndex(data.numAttributes() - 1);

     for (int i = 0; i < data.numAttributes(); i++)
{
    // Print the current attribute.
    System.out.print(data.attribute(i) + ": ");

    // Print the values associated with the current attribute.
    double[] values = data.attributeToDoubleArray(i);
   //data= new double [row][col];
    System.out.println(Arrays.toString(values));
}

1 个答案:

答案 0 :(得分:0)

假设您要使用double[][],请按照以下步骤操作:

收集double[]中的所有ArrayList<double[]>

最后,使用list.toarray(new double[list.size()][])或类似的命令将动态长度列表转换为固定长度的数组。

或者您直接分配输出数组,因为Instances已经知道属性和实例的数量。

请注意,double[][]并不是严格意义上的矩阵。它可能参差不齐,即行的长度可能不同。此外,以上代码将产生转置矩阵,可能不是您所期望的。您可能需要遍历实例并改为使用instance.toDoubleArray()

通过任何方式,请查看attributeToDoubleArray的源代码,以了解Weka在内部进行的操作,从而为您提供一些进行下一步的想法。