2

10,000 を超えるディメンションのデータセットを使用しています。Wekaを使うにはテキストファイルをARFF形式に変換する必要がありますが、スパースARFF形式を使っても属性が多すぎてファイルサイズが大きすぎます。ARFFファイルのヘッダーのように多くの属性識別子を書き込まないようにするためのデータと同様の方法はありますか?

例:
@attribute A1
NUMERICAL @attribute A2 NUMERICAL
...
...
@attribute A10000 NUMERICAL

4

1 に答える 1

0

次の行 (TXT ファイル内) を ARFF にフォーマットするスクリプトを AWK でコーディングしました。

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-09-04T13:26:31.477 に答える