创建一个包含类似下面的成员一个简单的DataSet类:
public class DataSet {
private List<Column> columns = new ArrayList<Column>();
private List<Row> rows = new ArrayList<Row>();
public void parse(File file) {
// routines to read CSV data into this class
}
}
public class Row {
private Object[] data;
public void parse(String row, List<Column> columns) {
String[] row = data.split(",");
data = new Object[row.length];
int i = 0;
for(Column column : columns) {
data[i] = column.convert(row[i]);
i++;
}
}
}
public class Column {
private String name;
private int index;
private DataType type;
public Object convert(String data) {
if(type == DataType.NUMERIC) {
return Double.parseDouble(data);
} else {
return data;
}
}
}
public enum DataType {
CATEGORICAL, NUMERIC
}
这会处理任何数据集要使用。唯一的问题是用户必须定义数据集,方法是将数据列及其各自的数据类型定义到数据集。您可以在代码中执行此操作,也可以从文件中读取任何您认为更简单的内容。你可能能够默认很多配置数据(比如说CATEGORICAL),或者试图解析字段,如果失败它必须是CATEGORICAL,否则它的数字。通常情况下,该文件包含一个您可以解析的标题以查找列的名称,然后您只需查看该列中的数据即可确定数据类型。猜测数据类型的简单算法对于帮助您有很大的帮助。基本上,这是每隔一个包使用这种数据的完全相同的数据结构(例如R,Weka等)。
有些问题:1)您如何计划使用数据?如果你想查询或做类似的事情,可能数据库是你最好的选择。 2)你如何从存储库中获取数据? – javydreamercsw
当你说大型数据集时,你是什么意思?数据的问题究竟是什么?你能提供一个例子吗? – Behe
我正在测试一种新的数据离散化算法。为此,我需要读取数据并在Java中处理它 –