Package weka.core

Examples of weka.core.Range


    DataSource trainSource = null, testSource = null;
    ObjectInputStream objectInputStream = null;
    BufferedInputStream xmlInputStream = null;
    CostMatrix costMatrix = null;
    StringBuffer schemeOptionsText = null;
    Range attributesToOutput = null;
    long trainTimeStart = 0, trainTimeElapsed = 0,
    testTimeStart = 0, testTimeElapsed = 0;
    String xml = "";
    String[] optionsTmp = null;
    Classifier classifierBackup;
    Classifier classifierClassifications = null;
    boolean printDistribution = false;
    int actualClassIndex = -1// 0-based class index
    String splitPercentageString = "";
    double splitPercentage = -1;
    boolean preserveOrder = false;
    boolean trainSetPresent = false;
    boolean testSetPresent = false;
    String thresholdFile;
    String thresholdLabel;
    StringBuffer predsBuff = null; // predictions from cross-validation

    // help requested?
    if (Utils.getFlag("h", options) || Utils.getFlag("help", options)) {
     
      // global info requested as well?
      boolean globalInfo = Utils.getFlag("synopsis", options) ||
        Utils.getFlag("info", options);
     
      throw new Exception("\nHelp requested."
          + makeOptionString(classifier, globalInfo));
    }
   
    try {
      // do we get the input from XML instead of normal parameters?
      xml = Utils.getOption("xml", options);
      if (!xml.equals(""))
  options = new XMLOptions(xml).toArray();

      // is the input model only the XML-Options, i.e. w/o built model?
      optionsTmp = new String[options.length];
      for (int i = 0; i < options.length; i++)
  optionsTmp[i] = options[i];

      String tmpO = Utils.getOption('l', optionsTmp);
      //if (Utils.getOption('l', optionsTmp).toLowerCase().endsWith(".xml")) {
      if (tmpO.endsWith(".xml")) {
  // try to load file as PMML first
  boolean success = false;
  try {
    PMMLModel pmmlModel = PMMLFactory.getPMMLModel(tmpO);
    if (pmmlModel instanceof PMMLClassifier) {
      classifier = ((PMMLClassifier)pmmlModel);
      success = true;
    }
  } catch (IllegalArgumentException ex) {
    success = false;
  }
  if (!success) {
    // load options from serialized data  ('-l' is automatically erased!)
    XMLClassifier xmlserial = new XMLClassifier();
    Classifier cl = (Classifier) xmlserial.read(Utils.getOption('l', options));
   
    // merge options
    optionsTmp = new String[options.length + cl.getOptions().length];
    System.arraycopy(cl.getOptions(), 0, optionsTmp, 0, cl.getOptions().length);
    System.arraycopy(options, 0, optionsTmp, cl.getOptions().length, options.length);
    options = optionsTmp;
  }
      }

      noCrossValidation = Utils.getFlag("no-cv", options);
      // Get basic options (options the same for all schemes)
      classIndexString = Utils.getOption('c', options);
      if (classIndexString.length() != 0) {
  if (classIndexString.equals("first"))
    classIndex = 1;
  else if (classIndexString.equals("last"))
    classIndex = -1;
  else
    classIndex = Integer.parseInt(classIndexString);
      }
      trainFileName = Utils.getOption('t', options);
      objectInputFileName = Utils.getOption('l', options);
      objectOutputFileName = Utils.getOption('d', options);
      testFileName = Utils.getOption('T', options);
      foldsString = Utils.getOption('x', options);
      if (foldsString.length() != 0) {
  folds = Integer.parseInt(foldsString);
      }
      seedString = Utils.getOption('s', options);
      if (seedString.length() != 0) {
  seed = Integer.parseInt(seedString);
      }
      if (trainFileName.length() == 0) {
  if (objectInputFileName.length() == 0) {
    throw new Exception("No training file and no object "+
    "input file given.");
  }
  if (testFileName.length() == 0) {
    throw new Exception("No training file and no test "+
    "file given.");
  }
      } else if ((objectInputFileName.length() != 0) &&
    ((!(classifier instanceof UpdateableClassifier)) ||
        (testFileName.length() == 0))) {
  throw new Exception("Classifier not incremental, or no " +
      "test file provided: can't "+
  "use both train and model file.");
      }
      try {
  if (trainFileName.length() != 0) {
    trainSetPresent = true;
    trainSource = new DataSource(trainFileName);
  }
  if (testFileName.length() != 0) {
    testSetPresent = true;
    testSource = new DataSource(testFileName);
  }
  if (objectInputFileName.length() != 0) {
    if (objectInputFileName.endsWith(".xml")) {
      // if this is the case then it means that a PMML classifier was
      // successfully loaded earlier in the code
      objectInputStream = null;
      xmlInputStream = null;
    } else {
      InputStream is = new FileInputStream(objectInputFileName);
      if (objectInputFileName.endsWith(".gz")) {
        is = new GZIPInputStream(is);
      }
      // load from KOML?
      if (!(objectInputFileName.endsWith(".koml") && KOML.isPresent()) ) {
        objectInputStream = new ObjectInputStream(is);
        xmlInputStream    = null;
      }
      else {
        objectInputStream = null;
        xmlInputStream    = new BufferedInputStream(is);
      }
    }
  }
      } catch (Exception e) {
  throw new Exception("Can't open file " + e.getMessage() + '.');
      }
      if (testSetPresent) {
  template = test = testSource.getStructure();
  if (classIndex != -1) {
    test.setClassIndex(classIndex - 1);
  } else {
    if ( (test.classIndex() == -1) || (classIndexString.length() != 0) )
      test.setClassIndex(test.numAttributes() - 1);
  }
  actualClassIndex = test.classIndex();
      }
      else {
  // percentage split
  splitPercentageString = Utils.getOption("split-percentage", options);
  if (splitPercentageString.length() != 0) {
    if (foldsString.length() != 0)
      throw new Exception(
    "Percentage split cannot be used in conjunction with "
    + "cross-validation ('-x').");
    splitPercentage = Double.parseDouble(splitPercentageString);
    if ((splitPercentage <= 0) || (splitPercentage >= 100))
      throw new Exception("Percentage split value needs be >0 and <100.");
  }
  else {
    splitPercentage = -1;
  }
  preserveOrder = Utils.getFlag("preserve-order", options);
  if (preserveOrder) {
    if (splitPercentage == -1)
      throw new Exception("Percentage split ('-percentage-split') is missing.");
  }
  // create new train/test sources
  if (splitPercentage > 0) {
    testSetPresent = true;
    Instances tmpInst = trainSource.getDataSet(actualClassIndex);
    if (!preserveOrder)
      tmpInst.randomize(new Random(seed));
    int trainSize =
            (int) Math.round(tmpInst.numInstances() * splitPercentage / 100);
    int testSize  = tmpInst.numInstances() - trainSize;
    Instances trainInst = new Instances(tmpInst, 0, trainSize);
    Instances testInst  = new Instances(tmpInst, trainSize, testSize);
    trainSource = new DataSource(trainInst);
    testSource  = new DataSource(testInst);
    template = test = testSource.getStructure();
    if (classIndex != -1) {
      test.setClassIndex(classIndex - 1);
    } else {
      if ( (test.classIndex() == -1) || (classIndexString.length() != 0) )
        test.setClassIndex(test.numAttributes() - 1);
    }
    actualClassIndex = test.classIndex();
  }
      }
      if (trainSetPresent) {
  template = train = trainSource.getStructure();
  if (classIndex != -1) {
    train.setClassIndex(classIndex - 1);
  } else {
    if ( (train.classIndex() == -1) || (classIndexString.length() != 0) )
      train.setClassIndex(train.numAttributes() - 1);
  }
  actualClassIndex = train.classIndex();
  if ((testSetPresent) && !test.equalHeaders(train)) {
    throw new IllegalArgumentException("Train and test file not compatible!");
  }
      }
      if (template == null) {
  throw new Exception("No actual dataset provided to use as template");
      }
      costMatrix = handleCostOption(
    Utils.getOption('m', options), template.numClasses());

      classStatistics = Utils.getFlag('i', options);
      noOutput = Utils.getFlag('o', options);
      trainStatistics = !Utils.getFlag('v', options);
      printComplexityStatistics = Utils.getFlag('k', options);
      printMargins = Utils.getFlag('r', options);
      printGraph = Utils.getFlag('g', options);
      sourceClass = Utils.getOption('z', options);
      printSource = (sourceClass.length() != 0);
      printDistribution = Utils.getFlag("distribution", options);
      thresholdFile = Utils.getOption("threshold-file", options);
      thresholdLabel = Utils.getOption("threshold-label", options);

      // Check -p option
      try {
  attributeRangeString = Utils.getOption('p', options);
      }
      catch (Exception e) {
  throw new Exception(e.getMessage() + "\nNOTE: the -p option has changed. " +
      "It now expects a parameter specifying a range of attributes " +
  "to list with the predictions. Use '-p 0' for none.");
      }
      if (attributeRangeString.length() != 0) {
  printClassifications = true;
  noOutput = true;
  if (!attributeRangeString.equals("0"))
    attributesToOutput = new Range(attributeRangeString);
      }

      if (!printClassifications && printDistribution)
  throw new Exception("Cannot print distribution without '-p' option!");

View Full Code Here


  public double[] evaluateModel(Classifier classifier,
                                Instances data,
                                Object... forPredictionsPrinting) throws Exception {
    // for predictions printing
    StringBuffer buff = null;
    Range attsToOutput = null;
    boolean printDist = false;

    double predictions[] = new double[data.numInstances()];

    if (forPredictionsPrinting.length > 0) {
View Full Code Here

    String trainFileName, testFileName, seedString, foldsString;
    String objectInputFileName, objectOutputFileName, attributeRangeString;
    String graphFileName;
    String[] savedOptions = null;
    boolean printClusterAssignments = false;
    Range attributesToOutput = null;
    StringBuffer text = new StringBuffer();
    int theClass = -1; // class based evaluation of clustering
    boolean updateable = (clusterer instanceof UpdateableClusterer);
    DataSource source = null;
    Instance inst;

    if (Utils.getFlag('h', options) || Utils.getFlag("help", options)) {
     
      // global info requested as well?
      boolean globalInfo = Utils.getFlag("synopsis", options) ||
        Utils.getFlag("info", options);
     
      throw  new Exception("Help requested."
          + makeOptionString(clusterer, globalInfo));
    }
   
    try {
      // Get basic options (options the same for all clusterers
      //printClusterAssignments = Utils.getFlag('p', options);
      objectInputFileName = Utils.getOption('l', options);
      objectOutputFileName = Utils.getOption('d', options);
      trainFileName = Utils.getOption('t', options);
      testFileName = Utils.getOption('T', options);
      graphFileName = Utils.getOption('g', options);

      // Check -p option
      try {
  attributeRangeString = Utils.getOption('p', options);
      }
      catch (Exception e) {
  throw new Exception(e.getMessage() + "\nNOTE: the -p option has changed. " +
          "It now expects a parameter specifying a range of attributes " +
          "to list with the predictions. Use '-p 0' for none.");
      }
      if (attributeRangeString.length() != 0) {
  printClusterAssignments = true;
  if (!attributeRangeString.equals("0"))
    attributesToOutput = new Range(attributeRangeString);
      }

      if (trainFileName.length() == 0) {
        if (objectInputFileName.length() == 0) {
          throw  new Exception("No training file and no object "
View Full Code Here

    m_Instances.setClassIndex(2);
   
    try {
      result = applyFilter(
    new Filter[]{new AllFilter(), new AllFilter()},
    new Range[]{new Range("1-2"),new Range("4-5")},
    false);
    }
    catch (Exception e) {
      fail("Problem applying the filter: " + e);
    }
View Full Code Here

    m_Instances.setClassIndex(2);
   
    try {
      result = applyFilter(
    new Filter[]{new AllFilter(), new AllFilter()},
    new Range[]{new Range("1-2"),new Range("5")},
    true);
    }
    catch (Exception e) {
      fail("Problem applying the filter: " + e);
    }
View Full Code Here

    m_Instances.setClassIndex(2);
   
    try {
      result = applyFilter(
    new Filter[]{new AllFilter(), new AllFilter()},
    new Range[]{new Range("1,2,4"),new Range("2,4")},
    false);
    }
    catch (Exception e) {
      fail("Problem applying the filter: " + e);
    }
View Full Code Here

    m_Instances.setClassIndex(2);
   
    try {
      result = applyFilter(
    new Filter[]{new AllFilter(), new AllFilter()},
    new Range[]{new Range("1,2,4"),new Range("2,4")},
    true);
    }
    catch (Exception e) {
      fail("Problem applying the filter: " + e);
    }
View Full Code Here

   * Set the range of attributes to process.
   *
   * @param value   the new range.
   */
  public void setSelectedRange(String value) {
    m_SelectedRange = new Range(value);
  }
View Full Code Here

  public void setOptions(String[] options) throws Exception {
    String  tmpStr;
    String  classname;
    String[]  options2;
    Vector  objects;
    Range  range;

    super.setOptions(options);

    setRemoveUnused(Utils.getFlag("U", options));

    objects = new Vector();
    while ((tmpStr = Utils.getOption("F", options)).length() != 0) {
      options2    = Utils.splitOptions(tmpStr);
      classname      = options2[0];
      options2[0] = "";
      objects.add(Utils.forName(Filter.class, classname, options2));
    }

    // at least one filter
    if (objects.size() == 0)
      objects.add(new AllFilter());

    setFilters((Filter[]) objects.toArray(new Filter[objects.size()]));

    objects = new Vector();
    while ((tmpStr = Utils.getOption("R", options)).length() != 0) {
      if (tmpStr.startsWith("inv(") && tmpStr.endsWith(")")) {
  range = new Range(tmpStr.substring(4, tmpStr.length() - 1));
  range.setInvert(true);
      }
      else {
  range = new Range(tmpStr);
      }
      objects.add(range);
    }

    // at least one Range
    if (objects.size() == 0)
      objects.add(new Range("first-last"));

    setRanges((Range[]) objects.toArray(new Range[objects.size()]));

    // is number of filters the same as ranges?
    checkDimensions();
View Full Code Here

    for (int i = 0; i < getRanges().length; i++) {
      Instances newi = new Instances(instanceInfo, 0);
      if (instanceInfo.numInstances() > 0){
  newi.add((Instance)instanceInfo.instance(0).copy());
      }
      Range range = getRanges()[i];
      range.setUpper(instanceInfo.numAttributes() - 1);
      Instances subset = generateSubset(newi, range);
      getFilters()[i].setInputFormat(subset);
    }
  }
View Full Code Here

TOP

Related Classes of weka.core.Range

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.