Невозможно масштабировать данные с помощью 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++;
}
Затем установите дополнительные циклы для остальной части кода, где вы видите ту же строку, повторенную снова. (код не проверен...)