public RandomFeatureVectorIterator (Random r, Alphabet vocab, String[] classnames) { this (r, new Dirichlet(vocab, 2.0), 30, 0, 10, 20, classnames); }
public InstanceList (Random r, Alphabet vocab, String[] classNames, int meanInstancesPerLabel) { this (r, new Dirichlet(vocab, 2.0), 30, 0, 10, meanInstancesPerLabel, classNames); }
public RandomTokenSequenceIterator (Random r, Alphabet vocab, String[] classnames) { this (r, new Dirichlet(vocab, 2.0), 30, 0, 10, 20, classnames); }
public Dirichlet randomDirichlet (Random r, double averageAlpha) { double[] pr = randomRawMultinomial (r); double alphaSum = pr.length*averageAlpha; //System.out.println ("randomDirichlet alphaSum = "+alphaSum); for (int i = 0; i < pr.length; i++) pr[i] *= alphaSum; return new Dirichlet (pr, dict); }
public Dirichlet estimate () { Dirichlet d = new Dirichlet (((Multinomial)multinomials.get(0)).size()); for (int i = 1; i < multinomials.size(); i++) ((Multinomial)multinomials.get(i)).addProbabilitiesTo(d.alphas); double alphaSum = 0; for (int i = 0; i < d.alphas.length; i++) alphaSum += d.alphas[i]; for (int i = 0; i < d.alphas.length; i++) d.alphas[i] /= alphaSum; // xxx Fix this to set sum by variance matching throw new UnsupportedOperationException ("Not yet implemented."); //return d; }
public InstanceList (Random r, int vocabSize, int numClasses) { this (r, new Dirichlet(dictOfSize(vocabSize), 2.0), 30, 0, 10, 20, classNamesOfSize(numClasses)); }
public RandomFeatureVectorIterator (Random r, int vocabSize, int numClasses) { this (r, new Dirichlet(dictOfSize(vocabSize), 2.0), 30, 0, 10, 20, classNamesOfSize(numClasses)); }
public RandomTokenSequenceIterator (Random r, int vocabSize, int numClasses) { this (r, new Dirichlet(dictOfSize(vocabSize), 2.0), 30, 0, 10, 20, classNamesOfSize(numClasses)); }
private double testRandomTrainedOn (InstanceList training) { ClassifierTrainer trainer = new MaxEntTrainer (); Alphabet fd = dictOfSize (3); String[] classNames = new String[] {"class0", "class1", "class2"}; Random r = new Random (1); PipeInputIterator iter = new RandomTokenSequenceIterator (r, new Dirichlet(fd, 2.0), 30, 0, 10, 200, classNames); training.add (iter); InstanceList testing = new InstanceList (training.getPipe ()); testing.add (new RandomTokenSequenceIterator (r, new Dirichlet(fd, 2.0), 30, 0, 10, 200, classNames)); System.out.println ("Training set size = "+training.size()); System.out.println ("Testing set size = "+testing.size()); Classifier classifier = trainer.train (training); System.out.println ("Accuracy on training set:"); System.out.println (classifier.getClass().getName() + ": " + new Trial (classifier, training).accuracy()); System.out.println ("Accuracy on testing set:"); double testAcc = new Trial (classifier, testing).accuracy(); System.out.println (classifier.getClass().getName() + ": " + testAcc); return testAcc; }
r, new Dirichlet (fd, 2.0), 30, 0, 10, 50,