When I try using weka API to binning it always got NullPointerException unless writing in the Debug comment block. Can anyone explain this for me? I'm new in JAVA and already read the docs but still can't figure it out.
This is from my test pj:
public static void main(String[] args) throws Exception{
Scanner _input = new Scanner(System.in);
String path = "";
System.out.print("Input data path: ");
path = _input.nextLine();
/*Init data source*/
DataSource source = new DataSource(path);
Instances data = source.getDataSet();
/*if (data.classIndex() == -1)
data.setClassIndex(data.numAttributes() - 1);*/
/*Debug section*/ //THIS SECTION WORKS FINE
/*Discretize _dis = new Discretize();
_dis.setInputFormat(data);
_dis.setBins(10);
data = Filter.useFilter(data, _dis);
System.out.print(data.firstInstance());
System.exit(2);*/
System.out.println("Select sub function: \n"
+ "1. Equal-width\n"
+ "2. Equal-depth\n");
System.out.print("Input selection: ");
int select = _input.nextInt();
Discretize _dis = new Discretize();
_dis.setInputFormat(data);
_dis.setAttributeIndices("first-last");
if (select == 1) {
_dis.setBins(_input.nextInt());
}
else {
_dis.setDesiredWeightOfInstancesPerInterval(_input.nextDouble());
_dis.setUseEqualFrequency(true);
}
data = Filter.useFilter(data, _dis); //NULL POINTER EXCEPTION HERE
System.out.print(data.firstInstance());
}