Convert CSV in ARFF in android

2019-07-22 20:06发布

问题:

i have a cvs file that i want to convert in arff format.

I add this external jar in my build path and in libs/: weka-3.6.6-android.jar

My cvs file not have header row and it is like this:

0.56024569272995,0.34556102752685547,0.4986509583393733,0.025362752945036676,0.4992934039810014,0.56024569272995,0.34556102752685547,0.4986509583393733,0.025362752945036676,0.4992934039810014,0.56024569272995,0.34556102752685547,0.0,0.500127645839251,0.4992934039810014
0.5616480112075806,0.33134251832962036,0.48604997404442984,0.024514018315056698,0.48666570100992756,0.5616480112075806,0.33134251832962036,0.48604997404442984,0.024514018315056698,0.48666570100992756,0.5616480112075806,0.33134251832962036,0.0,0.4874815703186685,0.48666570100992756
0.6170566082000732,0.3362383246421814,0.48836380223366727,0.026372415937359308,0.4890729818269294,0.6170566082000732,0.3362383246421814,0.48836380223366727,0.026372415937359308,0.4890729818269294,0.6170566082000732,0.3362383246421814,0.0,0.4898928868146426,0.4890729818269294

According to weka website this code makes conversion from cvs to arff:

public void convertCSVtoArff(String activity){

    try {
    String file_source = activity + ".csv";
    String file_dest = activity + ".arff";

    // load CSV
    CSVLoader loader = new CSVLoader();
    loader.setSource(new File(file_path + "samples/" + file_source));
    String[] options = {"-H"};
    loader.setOptions(options);

    Instances data = loader.getDataSet();

    // save ARFF
    ArffSaver saver = new ArffSaver();
    saver.setInstances(data);
    saver.setFile(new File(file_path + "samples/" + file_dest));
    saver.setDestination(new File(file_path + "samples/" + file_dest));
    saver.writeBatch();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

When i run the android application, LogCat gives me this error:

E/AndroidRuntime(23492): FATAL EXCEPTION: main
E/AndroidRuntime(23492):     
java.lang.ExceptionInInitializerError
E/AndroidRuntime(23492):at  
weka.core.converters.CSVLoader.readHeader(CSVLoader.java:882)
E/AndroidRuntime(23492):at   
weka.core.converters.CSVLoader.readStructure(CSVLoader.java:534)
E/AndroidRuntime(23492):at   
weka.core.converters.CSVLoader.getStructure(CSVLoader.java:519)
E/AndroidRuntime(23492):at 
weka.core.converters.CSVLoader.getDataSet(CSVLoader.java:552)
E/AndroidRuntime(23492):at 
com.unipa.file.FileOperation.convertCSVtoArff(FileOperation.java:151)
E/AndroidRuntime(23492):at   
      .
      .
      .
E/AndroidRuntime(23492): Caused by: java.lang.NullPointerException
E/AndroidRuntime(23492):    at weka.core.converters.ConverterUtils.<clinit>  
(ConverterUtils.java:741)
E/AndroidRuntime(23492):    ... 19 more

I dont't understand what is the problem.

Can help me to solve this problem?

Thanks in advance and sorry for my english.