Het inlezen van het tekst bestand.

Hier hoe je het tekst bestand van het neurale netwerk kunt inlezen. Het tekst bestand is toegevoegd, iris. En een voorbeeld van een simpel probleem.

De onderstaande klasse leest een bestand in dat speciaal voor dit probleem is geformateerd, dit staat ook op de wikipedia van de iris dataset. Vervolgens plaatst hij dit bestand in een datamatrix, een van te voren gedefinieerde dubbele rij.

package neuralnetwork;
/**
 * De klasse voor het inlezen van een .txt bestand. Deze klasse zet het gelezen bestand
 * om in een makkelijke java matrix.
 * @author Jan Broos
 */
import java.io.*;
import java.util.Scanner;

public class ReadTextFile
{
	private String filenaam;
	private int lines = 0;
	private int datakolommen = 0;
    private int classes = 0;
    private int type;
	private double[][] data;//De matrix bevat de gegevens.

	/**
	 * Constructor, leest het bestand en haalt gegeven uit de eerste regel
     * De eerste regel bevat het aantal regels, het aantal kolommen (attributen)
     * en het aantal klasse waarin het probleem moet worden ingedeeld.
	 * @param naam De naam van het bestand waaruit we lezen.
	 */
	public ReadTextFile(String naam)
	{
		filenaam = naam;
		try
        {
            FileReader file = new FileReader(filenaam);
            Scanner scan = new Scanner (new BufferedReader(file));
            //Leest de header van het bestand, de iris.txt is zo voorgedefinieerd.
            lines = scan.nextInt();
            datakolommen = scan.nextInt();
            classes = scan.nextInt();
            data = new double[lines][datakolommen+1];
            putRecordsInArray(scan);//Vult de matrix met data uit het bestand (leest per regel)

            file.close();
        }
        catch (IOException ioe)
        {
            System.out.println("Oeps, er ging iets mis bij lezen van de file "+filenaam);
        }
    }

	/**
	 * Geeft de data matrix.
	 * @return data[][]
	 */
	public double[][] getData()
	{
		return data;
	}

	/**
	 * Geeft het aantal kolommen (= het aantal attributen).
	 * @return datakolommen
	 */
	public int getKolommen()
	{
		return datakolommen;
	}

	/**
	 * Geeft het aantal regelnummers terug (= het aantal records).
	 * @return lines
	 */
	public int getLines()
	{
		return lines;
	}

	/**
	 * Geeft het aantal mogelijke klasses terug.
	 * @return classes
	 */
	public int getClasses()
	{
		return classes;
	}

	/**
	 * Stopt de gescande regels in een data matrix [i][j]
	 * @param scan
	 */
	public void putRecordsInArray(Scanner scan)
	{
		for(int i = 0; i < lines; i++)
		{
			for(int j = 0; j < datakolommen+1; j++)
			{
				data[i][j] = Double.valueOf(scan.next());
			}
			scan.nextLine();
		}
	}
}