package shared.reader;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
import shared.DataSet;
import shared.DataSetDescription;
import shared.Instance;
/**
* Class to read in data from a CSV file without a specified label
* @author Tim Swihart <https://github.com/chronoslynx>
* @date 2013-03-05
*/
public class CSVDataSetReader extends DataSetReader {
public CSVDataSetReader(String file) {
super(file);
// TODO Auto-generated constructor stub
}
@Override
public DataSet read() throws Exception {
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
List<Instance> data = new ArrayList<Instance>();
Pattern pattern = Pattern.compile("[ ,]+");
while ((line = br.readLine()) != null) {
String[] split = pattern.split(line.trim());
double[] input = new double[split.length];
for (int i = 0; i < input.length; i++) {
input[i] = Double.parseDouble(split[i]);
}
Instance instance = new Instance(input);
data.add(instance);
}
br.close();
Instance[] instances = (Instance[]) data.toArray(new Instance[0]);
DataSet set = new DataSet(instances);
set.setDescription(new DataSetDescription(set));
return set;
}
}