/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package org.neuroph.contrib.autotrain;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.List;

/**
 *
 * @author Milan Brkic - milan.brkic1@yahoo.com
 */
public class Util {

    private static final String FILENAME = "result.csv";

    /**
     * Generate header of a file and add data.
     *
     * @param trainer
     * @param results
     * @throws FileNotFoundException
     */
    public static void saveToCSV(AutoTrainer trainer, List results) throws FileNotFoundException {
        System.out.println("Creating 'result.csv'...");
        StringBuilder sb = new StringBuilder();
        boolean split = trainer.isSplitForTesting();
        boolean stat = trainer.generatesStatistics();

        //creating header of document
        sb.append("Learning rate, Hidden Neurons, Momentum, Max Error, ");
        boolean pom = true;
        if (split) {
            sb.append("Training Set(%), Test Set(%), ");
        }

        if (stat) {
            sb.append("Min Iterations, Max Iterations,Mean Iterations,STD Iterations, Min MSE,Max MSE,Mean MSE,STD MSE,");
            pom = false;
        }
        if (pom) {
            sb.append("Iterations, Total error, ");
        }
        sb.append("\n");
        //done creating header of document

        //loops through TrainingResult list and writing data in StringBuilder
        for (TrainingResult tr : results) {
            double lr = tr.getSettings().getLearningRate();
            int hidden = tr.getSettings().getHiddenNeurons();
            double momentum = tr.getSettings().getMomentum();
            double error = tr.getSettings().getMaxError();
            sb.append(lr);
            sb.append(',');
            sb.append(hidden);
            sb.append(',');
            sb.append(momentum);
            sb.append(',');
            sb.append(error);
            sb.append(',');
            if (split) {
                sb.append(tr.getSettings().getTrainingSet());
                sb.append(',');
                sb.append(tr.getSettings().getTestSet());
                sb.append(',');
            }
            if (stat) {
                sb.append(tr.getIterationStat().getMin());
                sb.append(',');
                sb.append(tr.getIterationStat().getMax());
                sb.append(',');
                sb.append(tr.getIterationStat().getMean());
                sb.append(',');
                sb.append(tr.getIterationStat().getStd());
                sb.append(',');
                sb.append(new BigDecimal(tr.getMSE().getMin()).setScale(8, RoundingMode.HALF_UP));
                sb.append(',');
                sb.append(new BigDecimal(tr.getMSE().getMax()).setScale(8, RoundingMode.HALF_UP));
                sb.append(',');
                sb.append(new BigDecimal(tr.getMSE().getMean()).setScale(8, RoundingMode.HALF_UP));
                sb.append(',');
                sb.append(new BigDecimal(tr.getMSE().getStd()).setScale(8, RoundingMode.HALF_UP));
                sb.append(',');
            }
            if (pom) {
                sb.append(tr.getIterations());
                sb.append(',');
                sb.append(tr.getTotalError());
                sb.append(',');
            }
            sb.append('\n');
        }
        //done writing data in StringBuilder
        try (PrintWriter pw = new PrintWriter(new File(FILENAME))) {
            pw.write(sb.toString());
        }
        System.out.println("'result.csv' successfully created.");
    }

}

 

Ads help maintain this website.