private static void ensembleLearningDemo() {
    System.out.println(Util.ntimes("*", 100));
    System.out.println(
        "\n Ensemble Decision Demo - Weak Learners co operating to give Superior decisions ");
    System.out.println(Util.ntimes("*", 100));
    try {
      DataSet ds = DataSetFactory.getRestaurantDataSet();
      List stumps = DecisionTree.getStumpsFor(ds, "Yes", "No");
      List<Learner> learners = new ArrayList<Learner>();

      System.out.println("\nStump Learners vote to decide in this algorithm");
      for (Object stump : stumps) {
        DecisionTree sl = (DecisionTree) stump;
        StumpLearner stumpLearner = new StumpLearner(sl, "No");
        learners.add(stumpLearner);
      }
      AdaBoostLearner learner = new AdaBoostLearner(learners, ds);
      learner.train(ds);
      int[] result = learner.test(ds);
      System.out.println(
          "\nThis Ensemble Learner  classifies the data set with "
              + result[0]
              + " successes"
              + " and "
              + result[1]
              + " failures");
      System.out.println("\n");

    } catch (Exception e) {

    }
  }
  private static void decisionListDemo() {
    try {
      System.out.println(Util.ntimes("*", 100));
      System.out.println(
          "DecisionList Demo - Inducing a DecisionList from the Restaurant DataSet\n ");
      System.out.println(Util.ntimes("*", 100));
      DataSet ds = DataSetFactory.getRestaurantDataSet();
      DecisionListLearner learner = new DecisionListLearner("Yes", "No", new DLTestFactory());
      learner.train(ds);
      System.out.println("The Induced DecisionList is");
      System.out.println(learner.getDecisionList());
      int[] result = learner.test(ds);

      System.out.println(
          "\nThis Decision List classifies the data set with "
              + result[0]
              + " successes"
              + " and "
              + result[1]
              + " failures");
      System.out.println("\n");

    } catch (Exception e) {
      System.out.println("Decision ListDemo Failed");
    }
  }
  private static void backPropogationDemo() {
    try {
      System.out.println(Util.ntimes("*", 100));
      System.out.println(
          "\n BackpropagationDemo  - Running BackProp on Iris data Set with 10 epochs of learning ");
      System.out.println(Util.ntimes("*", 100));

      DataSet irisDataSet = DataSetFactory.getIrisDataSet();
      Numerizer numerizer = new IrisDataSetNumerizer();
      NNDataSet innds = new IrisNNDataSet();

      innds.createExamplesFromDataSet(irisDataSet, numerizer);

      NNConfig config = new NNConfig();
      config.setConfig(FeedForwardNeuralNetwork.NUMBER_OF_INPUTS, 4);
      config.setConfig(FeedForwardNeuralNetwork.NUMBER_OF_OUTPUTS, 3);
      config.setConfig(FeedForwardNeuralNetwork.NUMBER_OF_HIDDEN_NEURONS, 6);
      config.setConfig(FeedForwardNeuralNetwork.LOWER_LIMIT_WEIGHTS, -2.0);
      config.setConfig(FeedForwardNeuralNetwork.UPPER_LIMIT_WEIGHTS, 2.0);

      FeedForwardNeuralNetwork ffnn = new FeedForwardNeuralNetwork(config);
      ffnn.setTrainingScheme(new BackPropLearning(0.1, 0.9));

      ffnn.trainOn(innds, 10);

      innds.refreshDataset();
      int[] result = ffnn.testOnDataSet(innds);
      System.out.println(result[0] + " right, " + result[1] + " wrong");
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
  private static void perceptronDemo() {
    try {
      System.out.println(Util.ntimes("*", 100));
      System.out.println(
          "\n Perceptron Demo - Running Perceptron on Iris data Set with 10 epochs of learning ");
      System.out.println(Util.ntimes("*", 100));
      DataSet irisDataSet = DataSetFactory.getIrisDataSet();
      Numerizer numerizer = new IrisDataSetNumerizer();
      NNDataSet innds = new IrisNNDataSet();

      innds.createExamplesFromDataSet(irisDataSet, numerizer);

      Perceptron perc = new Perceptron(3, 4);

      perc.trainOn(innds, 10);

      innds.refreshDataset();
      int[] result = perc.testOnDataSet(innds);
      System.out.println(result[0] + " right, " + result[1] + " wrong");
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
예제 #5
0
  // function SIMULATED-ANNEALING(problem, schedule) returns a solution state
  // inputs: problem, a problem
  // schedule, a mapping from time to "temperature"
  public List<String> search(Problem p) throws Exception {
    // local variables: current, a node
    // next, a node
    // T, a "temperature" controlling the probability of downward steps
    clearInstrumentation();
    outcome = SearchOutcome.FAILURE;
    lastState = null;
    // current <- MAKE-NODE(INITIAL-STATE[problem])
    Node current = new Node(p.getInitialState());
    Node next = null;
    List<String> ret = new ArrayList<String>();
    // for t <- 1 to INFINITY do
    int timeStep = 0;
    while (true) {
      // temperature <- schedule[t]
      double temperature = scheduler.getTemp(timeStep);
      timeStep++;
      // if temperature = 0 then return current
      if (temperature == 0.0) {
        if (p.isGoalState(current.getState())) {
          outcome = SearchOutcome.SOLUTION_FOUND;
        }
        ret = SearchUtils.actionsFromNodes(current.getPathFromRoot());
        lastState = current.getState();
        break;
      }

      List<Node> children = expandNode(current, p);
      if (children.size() > 0) {
        // next <- a randomly selected successor of current
        next = Util.selectRandomlyFromList(children);
        // /\E <- VALUE[next] - VALUE[current]
        int deltaE = getValue(p, next) - getValue(p, current);

        if (shouldAccept(temperature, deltaE)) {
          current = next;
        }
      }
    }

    return ret;
  }