/*********************************************************************** This file is part of KEEL-software, the Data Mining tool for regression, classification, clustering, pattern mining and so on. Copyright (C) 2004-2010 F. Herrera (herrera@decsai.ugr.es) L. S�nchez (luciano@uniovi.es) J. Alcal�-Fdez (jalcala@decsai.ugr.es) S. Garc�a (sglopez@ujaen.es) A. Fern�ndez (alberto.fernandez@ujaen.es) J. Luengo (julianlm@decsai.ugr.es) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ **********************************************************************/ package keel.Algorithms.Decision_Trees.DT_GA.C45; import java.io.*; import keel.Dataset.Attributes; /** * This class implements the interface Algorithm * * @author Anonymous * @version 1.0 * @since JDK1.5 */ public abstract class Algorithm { /** The name of the file that contains the information to build the model. */ protected static String modelFileName = ""; /** The name of the file that contains the information to make the training. */ protected static String trainFileName = ""; /** The name of the file that contains the information to make the test. */ protected static String testFileName = ""; /** The name of the train output file. */ protected static String trainOutputFileName; /** The name of the test output file. */ protected static String testOutputFileName; /** The name of the result file. */ protected static String resultFileName; /** Correctly classified itemsets. */ protected int correct = 0; /** Correctly classified in test. */ protected int testCorrect = 0; /** The model dataset. */ protected Dataset modelDataset; /** The train dataset. */ protected Dataset trainDataset; /** The test dataset. */ protected Dataset testDataset; /** The log file. */ protected static BufferedWriter log; /** The instant of starting the algorithm. */ protected long startTime = System.currentTimeMillis(); /** Function to initialize the stream tokenizer. * * @param tokenizer The tokenizer. */ protected void initTokenizer(StreamTokenizer tokenizer) { tokenizer.resetSyntax(); tokenizer.whitespaceChars(0, ' '); tokenizer.wordChars(' ' + 1, '\u00FF'); tokenizer.whitespaceChars(',', ','); tokenizer.quoteChar('"'); tokenizer.quoteChar('\''); tokenizer.ordinaryChar('='); tokenizer.ordinaryChar('{'); tokenizer.ordinaryChar('}'); tokenizer.ordinaryChar('['); tokenizer.ordinaryChar(']'); tokenizer.eolIsSignificant(true); } /** Function to get the name of the relation and the names, types and possible values of every attribute in * a dataset. * * @return The name and the attributes of the relation. */ protected String getHeader() { String header; header = "@relation " + Attributes.getRelationName() + "\n"; header += Attributes.getInputAttributesHeader(); header += Attributes.getOutputAttributesHeader(); header += Attributes.getInputHeader() + "\n"; header += Attributes.getOutputHeader() + "\n"; header += "@data\n"; return header; } /** Puts the tokenizer in the first token of the next line. * * @param tokenizer The tokenizer which reads this function. * * @return True if reaches the end of file. False otherwise. * * @throws Exception If cannot read the tokenizer. */ protected boolean getNextToken(StreamTokenizer tokenizer) throws Exception { try { if (tokenizer.nextToken() == StreamTokenizer.TT_EOF) { return false; } else { tokenizer.pushBack(); while (tokenizer.nextToken() != StreamTokenizer.TT_EOL) { ; } while (tokenizer.nextToken() == StreamTokenizer.TT_EOL) { ; } if (tokenizer.sval == null) { return false; } else { return true; } } } catch (Exception e) { System.err.println(e.getMessage()); return false; } } /** Function to read the options from the execution file and assign the values to the parameters. * * @param options The StreamTokenizer that reads the parameters file. * * @throws Exception If the format of the file is not correct. */ protected abstract void setOptions(StreamTokenizer options) throws Exception; /** Evaluates the algorithm and writes the results in the file. * * @exception If the file cannot be written. */ protected abstract void printResult() throws IOException; /** Evaluates the test dataset and writes the results in the file. * * @exception If the file cannot be written. */ protected abstract void printTest() throws IOException; /** Evaluates the training dataset and writes the results in the file. * * @exception If the file cannot be written. */ protected abstract void printTrain() throws IOException; }