public void updateWeights(TrainingSet tSet, double[] w, int[] m, Classifier baseClassifier) { int n = w.length; // update misclassification counts with results from latest classifier for (int i = 0; i < n; i++) { Instance instance = tSet.getInstance(i); Concept actualConcept = baseClassifier.classify(instance); Concept expectedConcept = instance.getConcept(); if (actualConcept == null || !(actualConcept.getName().equals(expectedConcept.getName()))) { m[i]++; } } // update weights double sum = 0.0; for (int i = 0; i < n; i++) { sum += (1.0 + Math.pow(m[i], 4)); } for (int i = 0; i < n; i++) { w[i] = (1.0 + Math.pow(m[i], 4)) / sum; } }