В Encog 3.x, как вы нормализовать данные, использовать его для обучения и денормализовать результаты?Encog Neural Net: Нормализация
Нет хорошей документации по этому вопросу, и простой пример, который применил бы каждый из них, значительно сократил бы кривую обучения в Encog. Я еще не понял все это, но вот некоторые ресурсы.
(1) * How does Encog 3.0 Normalize? *
Этот код ОК для сохранения нового нормализованное CSV. Здесь неясно, как взять AnalystNormalizeCSV и преобразовать его в MLDataSet, чтобы фактически использовать его.
EncogAnalyst analyst = new EncogAnalyst();
AnalystWizard wizard = new AnalystWizard(analyst);
wizard.wizard(sourceFile, true, AnalystFileFormat.DECPNT_COMMA);
final AnalystNormalizeCSV norm = new AnalystNormalizeCSV();
norm.analyze(sourceFile, true, CSVFormat.ENGLISH, analyst);
norm.setOutputFormat(CSVFormat.ENGLISH);
norm.setProduceOutputHeaders(true);
norm.normalize(targetFile)
(2) * How do I normalize a CSV file with Encog (Java) *
Этот код, опять же, нормально для получения нормализованного выходного CSV. Но неясно, как принимать нормализованные данные и фактически применять их. Существует способ задания цели как MLData, но он предполагает, что все столбцы являются входными данными и не оставляют места для каких-либо идеалов. Кроме того, обе эти опции трудно использовать, если в файле есть заголовки и/или неиспользованные столбцы.
try {
File rawFile = new File(MYDIR, "iris.csv");
// download Iris data from UCI
if (rawFile.exists()) {
System.out.println("Data already downloaded to: " + rawFile.getPath());
} else {
System.out.println("Downloading iris data to: " + rawFile.getPath());
BotUtil.downloadPage(new URL("http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"), rawFile);
}
// define the format of the iris data
DataNormalization norm = new DataNormalization();
InputField inputSepalLength, inputSepalWidth, inputPetalLength, inputPetalWidth;
InputFieldCSVText inputClass;
norm.addInputField(inputSepalLength = new InputFieldCSV(true, rawFile, 0));
norm.addInputField(inputSepalWidth = new InputFieldCSV(true, rawFile, 1));
norm.addInputField(inputPetalLength = new InputFieldCSV(true, rawFile, 2));
norm.addInputField(inputPetalWidth = new InputFieldCSV(true, rawFile, 3));
norm.addInputField(inputClass = new InputFieldCSVText(true, rawFile, 4));
inputClass.addMapping("Iris-setosa");
inputClass.addMapping("Iris-versicolor");
inputClass.addMapping("Iris-virginica");
// define how we should normalize
norm.addOutputField(new OutputFieldRangeMapped(inputSepalLength, 0, 1));
norm.addOutputField(new OutputFieldRangeMapped(inputSepalWidth, 0, 1));
norm.addOutputField(new OutputFieldRangeMapped(inputPetalLength, 0, 1));
norm.addOutputField(new OutputFieldRangeMapped(inputPetalWidth, 0, 1));
norm.addOutputField(new OutputOneOf(inputClass, 1, 0));
// define where the output should go
File outputFile = new File(MYDIR, "iris_normalized.csv");
norm.setCSVFormat(CSVFormat.ENGLISH);
norm.setTarget(new NormalizationStorageCSV(CSVFormat.ENGLISH, outputFile));
// process
norm.setReport(new ConsoleStatusReportable());
norm.process();
System.out.println("Output written to: " + rawFile.getPath());
} catch (Exception ex) {
ex.printStackTrace();
}
(3) * денормализации *
Я в полной потери для того, как взять все это и денормализовать согласно Максу и миня соответствующие данные-типа.
Примечание: Я разрабатываю отдельный класс для выполнения всех нормализации/денормализации, но все же ... нет ли способа сделать это с помощью encog? –