Слишком много атрибутов для формата ARFF в Weka - PullRequest
2 голосов
/ 11 февраля 2012

Я работаю с набором данных измерения более 10000. Чтобы использовать Weka, мне нужно преобразовать текстовый файл в формат ARFF, но поскольку атрибутов слишком много, даже после использования разреженного формата ARFF размер файла слишком велик. Есть ли такой же метод, как для данных, чтобы избежать записи такого количества идентификаторов атрибутов, как в заголовке файла ARFF.

например:
@attribute A1 NUMERICAL
@attribute A2 NUMERICAL
...
...
@attribute A10000 NUMERICAL

1 Ответ

0 голосов
/ 04 сентября 2012

Я кодировал скрипт в AWK для форматирования следующих строк (в TXT-файле) в ARFF

example.txt источник:

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

Мой скрипт (to_arff), вы можете изменить значение FS в зависимости от разделителя, используемого в TXT-файле:

#!/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
...