public double valueOfCorrectLabel () { Labeling correctLabeling = instance.getLabeling(); int correctLabelIndex = correctLabeling.getBestIndex(); return labeling.value (correctLabelIndex); }
public boolean bestLabelIsCorrect () { Labeling correctLabeling = instance.getLabeling(); if (correctLabeling == null) throw new IllegalStateException ("Instance has no label."); return (labeling.getBestLabel().equals (correctLabeling.getBestLabel())); }
/** Calculate the recall for a particular target index from an array list of classifications */ public double getRecall( ArrayList classification, int index ) { int numCorrect = 0; int numInstances = 0; int trueLabel, classLabel; for (int i = 0; i<classification.size(); i++) { trueLabel = ((Labeling)(((Classification)classification.get(i)).getInstance()).getLabeling()).getBestIndex(); classLabel = ((Classification)classification.get(i)).getLabeling().getBestIndex(); if ( trueLabel == index ) { numInstances++; if ( classLabel == index) numCorrect++; } } if (numInstances==0) logger.warning("No class instances: dividing by 0"); return ((double)numCorrect/(double)numInstances); }
/** Calculate the precision for a particular target index from an array list of classifications */ public double getPrecision( ArrayList classification, int index ) { int numCorrect = 0; int numInstances = 0; int trueLabel, classLabel; for (int i = 0; i<classification.size(); i++) { trueLabel = ((Labeling)(((Classification)classification.get(i)).getInstance()).getLabeling()).getBestIndex(); classLabel = ((Classification)classification.get(i)).getLabeling().getBestIndex(); if ( classLabel == index) { numInstances++; if ( trueLabel == index ) numCorrect++; } } if (numInstances==0) logger.warning("No class instances: dividing by 0"); return ((double)numCorrect/(double)numInstances); }
private static void coalesceNewPair (Set keyClusters, Instance inst) if (inst.getLabeling().toString().equals("yes")) { MentionPair pair = (MentionPair)inst.getSource();
/** * Constructs matrix and calculates values * @param t the trial to build matrix from */ public ConfusionMatrix(Trial t) { this.trial = t; this.classifications = t.toArrayList(); Labeling tempLabeling = ((Classification)classifications.get(0)).getLabeling(); this.numClasses = tempLabeling.getLabelAlphabet().size(); values = new int[numClasses][numClasses]; for(int i=0; i < classifications.size(); i++) { LabelVector lv = ((Classification)classifications.get(i)).getLabelVector(); Instance inst = ((Classification)classifications.get(i)).getInstance(); int bestIndex = lv.getBestIndex(); int correctIndex = inst.getLabeling().getBestIndex(); assert(correctIndex != -1); //System.out.println("Best index="+bestIndex+". Correct="+correctIndex); values[correctIndex][bestIndex]++; } }
public void testClassifier (InstanceList tlist, MaxEnt classifier) { Trial t = new Trial(classifier, tlist); System.out.println("test accuracy: " + t.labelF1("yes")); for (Iterator it = tlist.iterator(); it.hasNext();) { Instance inst = (Instance)it.next(); Classification classification = (Classification)classifier.classify(inst); Labeling l = classification.getLabeling(); //System.out.println("Best label: " + l.getBestLabel().toString() + " " // + inst.getTarget().toString()); if (!l.getBestLabel().toString().equals(inst.getTarget().toString())) { Citation c1 = (Citation)((NodePair)inst.getSource()).getObject1(); Citation c2 = (Citation)((NodePair)inst.getSource()).getObject2(); if (inst.getLabeling().getBestLabel().toString().equals("yes")) { System.out.println("FN: " + c1.print() + " " + c1.getString() + "\n " + c2.print() + " " + c2.getString()); System.out.println("Citation venue: " + c1.getField("venue") + " --> " + c2.getField("venue")); } else if (inst.getLabeling().getBestLabel().toString().equals("no")) { System.out.println("FP: " + c1.print() + " " + c1.getString() + "\n " + c2.print() + " " + c2.getString()); System.out.println("Citation venue: " + c1.getField("venue") + " --> " + c2.getField("venue")); } System.out.println(printParamDetails((FeatureVector)inst.getData(), classification, classifier)); } } }
double instanceWeight = iter.getInstanceWeight(); Instance instance = iter.nextInstance(); Labeling labeling = instance.getLabeling ();
if (getClassification(i).getInstance().getLabeling().getBestLabel().toString().equals(label)) numInLabel++;
FeatureVector fv = (FeatureVector) instance.getData(); int classIndex = instance.getLabeling().getBestIndex(); classCounts[classIndex]++; for (int fvi = 0; fvi < fv.numLocations(); fvi++) {
public void testRandomTrained () { InstanceList ilist = new InstanceList (new Random(1), 10, 2); Classifier c = new NaiveBayesTrainer ().train (ilist); // test on the training data int numCorrect = 0; for (int i = 0; i < ilist.size(); i++) { Instance inst = ilist.getInstance(i); Classification cf = c.classify (inst); cf.print (); if (cf.getLabeling().getBestLabel() == inst.getLabeling().getBestLabel()) numCorrect++; } System.out.println ("Accuracy on training set = " + ((double)numCorrect)/ilist.size()); }
Labeling labeling = inst.getLabeling (); FeatureVector fv = (FeatureVector) inst.getData (); double instanceWeight = ilist.getInstanceWeight(i);
for (int i = 0; i < numInstances; i++) { Instance inst = trainingList.getInstance(i); int trueClassIndex = inst.getLabeling().getBestIndex(); for (int j = 0; j < numClasses; j++) { if (j != trueClassIndex) {
double instanceWeight = iter.getInstanceWeight(); Instance inst = iter.nextInstance(); Labeling labeling = inst.getLabeling ();
double instanceWeight = iter.getInstanceWeight(); Instance inst = iter.nextInstance(); Labeling labeling = inst.getLabeling ();
private static double[][] calcFeatureCounts (InstanceList ilist) { int numClasses = ilist.getTargetAlphabet().size(); int numFeatures = ilist.getDataAlphabet().size(); double[][] featureCounts = new double[numClasses][numFeatures]; // Count features across all classes for (int i = 0; i < ilist.size(); i++) { Instance inst = ilist.getInstance(i); if (!(inst.getData() instanceof FeatureVector)) throw new IllegalArgumentException ("Currently only handles FeatureVector data"); FeatureVector fv = (FeatureVector) inst.getData (); // xxx Note that this ignores uncertain-labels. int labelIndex = inst.getLabeling ().getBestIndex(); int fli; for (int fl = 0; fl < fv.numLocations(); fl++) { fli = fv.indexAtLocation(fl); if (countInstances) featureCounts[labelIndex][fli]++; else featureCounts[labelIndex][fli] += fv.valueAtLocation(fl); } } return featureCounts; }
assert (classifications[i].getLabelAlphabet() == ilist.getTargetAlphabet()); Instance inst = ilist.getInstance(i); Labeling labeling = inst.getLabeling (); FeatureVector fv = (FeatureVector) inst.getData (); double instanceWeight = ilist.getInstanceWeight(i);
Labeling labeling = inst.getLabeling (); FeatureVector fv = (FeatureVector) inst.getData(); int fvisize = fv.numLocations();
double instanceWeight = iter.getInstanceWeight(); Instance inst = iter.nextInstance(); Labeling labeling = inst.getLabeling (); FeatureVector fv = (FeatureVector) inst.getData (instancePipe); for (int lpos = 0; lpos < labeling.numLocations(); lpos++) {
Labeling labeling = inst.getLabeling (); FeatureVector fv = (FeatureVector) inst.getData (dataPipe); double[] results = new double [numLabels];