【问题标题】:h2o basic parse fileh2o 基本解析文件
【发布时间】:2017-04-01 02:48:42
【问题描述】:

我是 h2o 的新手。我在 Windows 7、java 1.8 上使用 h2o-3.10.4.2。我正在使用水流。只是通过 k-modes 演示。如果我从https://archive.ics.uci.edu/ml/machine-learning-databases/00236/ 导入seeds_dataset.txt 文件并尝试在第8 条记录处解析它,解析器无法捕获第7 列和第8 列。这很可能是由于2 个选项卡。我希望解析器将任何空格视为分隔符。请注意,如果我使用“http://s3.amazonaws.com/h2o-public-test-data/smalldata/flow_examples/seeds_dataset.txt”,那么我不会遇到任何问题,因为标签已被整理出来。

所以最后我想知道,当我在 h2o 中使用 parseFiles 时,如何将任何空格设置为分隔符。我尝试使用 startoftext 等,但我无法获取所有列。

【问题讨论】:

    标签: java h2o


    【解决方案1】:

    数据很小,因此快速解决此问题的方法是在摄取之前删除文件中的双 \t。有很多方法可以做到这一点,这里有一个快速而肮脏的方法:

    import io
    f = open("seeds_dataset.txt")
    s = list(f.read())
    for i in range(0,len(s)-1):
        if s[i] == '\t' and s[i+1] == '\t':
            s[i+1] = ''
    
    output = open("seeds_dataset_fixed.txt", 'w+')
    output.write("".join(s))
    
    import h2o
    h2o.init()
    h2o.import_file("seeds_dataset_fixed.txt")
    

    希望对你有帮助

    【讨论】:

    • 嘿尼克,虽然这可行并且可以使用。我想单独使用 h2o Flow 来达到同样的效果。
    【解决方案2】:

    我遵循了 Flow 建议的解析设置,它运行良好(找到了 \t 分隔符和 8 列) - 无需手动干预。你能把你的步骤和这些比较一下吗?

    importFiles [ "https://archive.ics.uci.edu/ml/machine-learning-databases/00236/seeds_dataset.txt" ]
    
    setupParse source_frames: [ "https://archive.ics.uci.edu/ml/machine-learning-databases/00236/seeds_dataset.txt" ]
    
    parseFiles
      source_frames: ["https://archive.ics.uci.edu/ml/machine-learning-databases/00236/seeds_dataset.txt"]
      destination_frame: "seeds_dataset1.hex"
      parse_type: "CSV"
      separator: 9
      number_columns: 8
      single_quotes: false
      column_names: null
      column_types: ["Numeric","Numeric","Numeric","Numeric","Numeric","Numeric","Numeric","Numeric"]
      delete_on_done: true
      check_header: -1
      chunk_size: 4194304
    

    这是视图 getFrameSummary "seeds_dataset1.hex"

    点击“查看数据”:

    Row C1  C2  C3  C4  C5  C6  C7  C8
    1   15.2600 14.8400 0.8710  5.7630  3.3120  2.2210  5.2200  1.0
    2   14.8800 14.5700 0.8811  5.5540  3.3330  1.0180  4.9560  1.0
    3   14.2900 14.0900 0.9050  5.2910  3.3370  2.6990  4.8250  1.0
    etc.
    

    【讨论】:

    • 嘿 Arno,除了您的第 1 步之外,其他步骤与您相同。您能否检查“seeds_dataset1.hex”中“列摘要”下的“缺失”。我无法从网络导入 h20 流,因此我保存了文件。我得到和以前一样的结果。 h20 能够识别 8 列。但请查看第 8 行和第 36 行。
    猜你喜欢
    • 2018-03-29
    • 1970-01-01
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-20
    • 1970-01-01
    相关资源
    最近更新 更多