【问题标题】:Too many attributes for ARFF format in WekaWeka中ARFF格式的属性太多
【发布时间】:2012-03-03 07:16:31
【问题描述】:

我正在处理维度超过 10,000 的数据集。要使用 Weka,我需要将文本文件转换为 ARFF 格式,但由于使用稀疏 ARFF 格式后属性太多,文件大小太大。是否有与数据类似的方法来避免在 ARFF 文件的标题中写入如此多的属性标识符。

例如:
@attribute A1 数字
@attribute A2 数字
...
...
@attribute A10000 数字

【问题讨论】:

  • Maximum number of attributes supported by WEKA。这是与创建 arff 文件(在这种情况下 sed 或 awk 可能会有所帮助)或直接在 weka 中处理它有关的问题吗?
  • @chl 感谢您的回复,我能够生成 arff 文件,但文件大小非常大,因为我有 1,84,000 个属性。我想知道是否有任何方法可以避免在 arff 文件中添加这么多标题。所有属性都是数字的,所以我认为可能有办法。

标签: weka arff


【解决方案1】:

我在 AWK 中编写了一个脚本,以将以下行(在 TXT 文件中)格式化为 ARFF

example.txt 来源:

Att_0 | Att_1 | Att_2 | ... | Att_n
1 | 2 | 3 | ... | 999

我的脚本(to_arff),你可以根据TXT文件中使用的分隔符来改变FS值:

#!/usr/bin/awk -f
# ./<script>.awk data.txt > data.arff

BEGIN {
    FS = "|";
    # WEKA separator
    separator = ",";
}

# The first line
NR == 1 {
    # WEKA headers
        split(FILENAME, relation, ".");
        # the relation's name is the source file's name
    print "@RELATION "relation[1]"\n";
    # attributes are "numeric" by default
    # types available: numeric, <nominal> {n1, n2, ..., nN}, string and date [<date-format>]
    for (i = 1; i <= NF; i++) {
        print "@ATTRIBUTE "$i" NUMERIC";
    }
    print "\n@DATA";
}

NR > 1 {
    s = "";
    first = 1;
    for (i = 1; i <= NF; i++) {
        if (first)
            first = 0;
        else
            s = s separator;
        s = s $i;
    }
    print s;
}

输出:

@RELATION example

@ATTRIBUTE Att_0 NUMERIC
@ATTRIBUTE Att_1 NUMERIC
@ATTRIBUTE Att_2 NUMERIC
@ATTRIBUTE Att_n NUMERIC

@DATA
1,2,3,9999

【讨论】:

    猜你喜欢
    • 2012-06-23
    • 2015-05-21
    • 1970-01-01
    • 2016-03-01
    • 1970-01-01
    • 2011-08-26
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多