首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取Java中的大数据集

读取Java中的大数据集
EN

Stack Overflow用户
提问于 2012-05-08 00:24:27
回答 3查看 1.9K关注 0票数 0

我正在使用Java从UCI Machine Learning Repository读取和处理一些数据集。我开始为每个数据集创建一个类,并使用特定的类文件。数据集中的每个属性都由所需类型的类中的相应数据成员表示。这种方法工作得很好,直到没有。属性<10-15。我只是增加或减少了类的数据成员,并更改了它们的类型以模拟新的数据集。我还对函数进行了必要的更改。

问题:我现在必须处理很多大型数据集。以这种方式处理具有>20-30属性的对象是非常乏味的。我不需要查询。我的数据离散化算法只需要对数据进行4次扫描即可离散化。我的工作在离散化之后立即结束。在这里什么是有效的策略?

我希望我已经能够清楚地说明我的问题。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-08 02:20:55

创建包含成员的简单DataSet类,如下所示:

代码语言:javascript
复制
 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
 }

它将处理您希望使用的任何数据集。唯一的问题是用户必须通过向DataSet定义列及其各自的数据类型来定义dataset。您可以在代码中完成,也可以从文件中读取,任何您认为更容易的方式。你也许能够默认很多配置数据(比如分类的),或者尝试解析字段,如果解析失败,它必须是分类的,否则它是数字的。通常,文件包含一个头文件,您可以通过解析来找到列的名称,然后只需通过查看该列中的数据来确定数据类型。猜测数据类型的简单算法对您有很大的帮助。本质上,这与每个其他包用于类似数据的数据结构完全相同(例如R、Weka等)。

票数 1
EN

Stack Overflow用户

发布于 2012-05-08 00:43:49

一些选项:

  1. 编写代码生成器以读取文件的元数据并生成等效的类文件。
  2. 无需关心类;将数据保留在ObjectString数组中,并根据需要进行强制转换。
  3. 为所有需要的类型创建一个包含DataElements和子类DataElements的集合的类,并在运行时使用元数据创建正确的类。

< code >G29

票数 3
EN

Stack Overflow用户

发布于 2012-05-08 00:56:44

我在我的一个项目中做了类似的事情;大量的可变数据,在我的案例中,我从互联网上获得了这些数据。因为我需要查询、排序等,所以我花了一些时间来设计一个数据库来容纳数据的所有变化(并不是所有的条目都有相同数量的属性)。这确实需要一段时间,但最终我使用相同的代码来获取任何条目的数据(在我的例子中使用JPA )。我的集成开发环境(NetBeans)直接使用数据库模式创建了大部分代码。

从你的问题中,不清楚你计划如何使用这些数据,所以我根据个人经验回答。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10485589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档