Невозможно масштабировать данные с помощью Encog

В настоящее время я пытаюсь масштабировать свой файл данных (train.nn) с помощью Encog 3, мой файл данных выглядит следующим образом (это упрощенный пример, в моем реальном файле у меня есть до 249 функций для каждого образца SP):

1,0,1,2,SP
4,5,6,1,SP

И это мой код для масштабирования:

File rawFile = new File(MYDIR, "train.nn");
File scaledFile = new File(MYDIR, "scaledTrain.nn");
EncogAnalyst analyst = new EncogAnalyst();

AnalystNormalizeCSV norm = new AnalystNormalizeCSV();
norm.analyze(rawFile, true, CSVFormat.ENGLISH, analyst);
norm.setProduceOutputHeaders(false);
norm.normalize(scaledFile);

Но я получил эту ошибку:

Exception in thread "main" org.encog.app.analyst.AnalystError: Multiple fields named: 1
    at org.encog.app.analyst.util.CSVHeaders.validateSameName(CSVHeaders.java:292)
    at org.encog.app.analyst.util.CSVHeaders.init(CSVHeaders.java:270)
    at org.encog.app.analyst.util.CSVHeaders.<init>(CSVHeaders.java:146)
    at org.encog.app.analyst.csv.normalize.AnalystNormalizeCSV.analyze(AnalystNormalizeCSV.java:147)

Я действительно не знаю, почему он пожаловался на это.... Может кто-то показать мне, что я здесь не так сделал?
Большое спасибо.
P / S: я уже посмотрел этот урок. Это не удобно для меня, так как оно определяет каждое поле (элемент) вручную, что плохо, так как в моем случае у меня есть до 249 объектов для каждого образца.

1 ответ

Решение

Вы можете настроить цикл следующим образом:

int fieldCount = 249;
InputFieldCSV[] inFields = new InputFieldCSV[fieldCount];

int i = 0;
while (i < fieldCount) {

    norm.addInputField(inFields[i] = new InputFieldCSV(true, rawFile, i));
    i++;
}

Затем установите дополнительные циклы для остальной части кода, где вы видите ту же строку, повторенную снова. (код не проверен...)

Другие вопросы по тегам