public Wrapper(int numCategories, int numFeatures, PriorFunction prior) { wrapped = new CrossFoldLearner(5, numCategories, numFeatures, prior); }
public Wrapper(int numCategories, int numFeatures, PriorFunction prior) { wrapped = new CrossFoldLearner(5, numCategories, numFeatures, prior); }
public Wrapper(int numCategories, int numFeatures, PriorFunction prior) { wrapped = new CrossFoldLearner(5, numCategories, numFeatures, prior); }
@Override public void readFields(DataInput input) throws IOException { wrapped = new CrossFoldLearner(); wrapped.readFields(input); } }
@Override public void readFields(DataInput input) throws IOException { wrapped = new CrossFoldLearner(); wrapped.readFields(input); } }
@Override public void readFields(DataInput input) throws IOException { wrapped = new CrossFoldLearner(); wrapped.readFields(input); } }
public CrossFoldLearner copy() { CrossFoldLearner r = new CrossFoldLearner(models.size(), numCategories(), numFeatures, prior); r.models.clear(); for (OnlineLogisticRegression model : models) { model.close(); OnlineLogisticRegression newModel = new OnlineLogisticRegression(model.numCategories(), model.numFeatures(), model.prior); newModel.copyFrom(model); r.models.add(newModel); } return r; }
public CrossFoldLearner copy() { CrossFoldLearner r = new CrossFoldLearner(models.size(), numCategories(), numFeatures, prior); r.models.clear(); for (OnlineLogisticRegression model : models) { model.close(); OnlineLogisticRegression newModel = new OnlineLogisticRegression(model.numCategories(), model.numFeatures(), model.prior); newModel.copyFrom(model); r.models.add(newModel); } return r; }
public CrossFoldLearner copy() { CrossFoldLearner r = new CrossFoldLearner(models.size(), numCategories(), numFeatures, prior); r.models.clear(); for (OnlineLogisticRegression model : models) { model.close(); OnlineLogisticRegression newModel = new OnlineLogisticRegression(model.numCategories(), model.numFeatures(), model.prior); newModel.copyFrom(model); r.models.add(newModel); } return r; }
/** * The CrossFoldLearner is probably the best learner to use for new applications. * * @throws IOException If test resources aren't readable. */ @Test public void crossValidation() throws IOException { Vector target = readStandardData(); CrossFoldLearner lr = new CrossFoldLearner(5, 2, 8, new L1()) .lambda(1 * 1.0e-3) .learningRate(50); train(getInput(), target, lr); System.out.printf("%.2f %.5f\n", lr.auc(), lr.logLikelihood()); test(getInput(), target, lr, 0.05, 0.3); }
@Test public void crossValidatedAuc() throws IOException { RandomUtils.useTestSeed(); Random gen = RandomUtils.getRandom(); Matrix data = readCsv("cancer.csv"); CrossFoldLearner lr = new CrossFoldLearner(5, 2, 10, new L1()) .stepOffset(10) .decayExponent(0.7) .lambda(1 * 1.0e-3) .learningRate(5); int k = 0; int[] ordering = permute(gen, data.numRows()); for (int epoch = 0; epoch < 100; epoch++) { for (int row : ordering) { lr.train(row, (int) data.get(row, 9), data.viewRow(row)); System.out.printf("%d,%d,%.3f\n", epoch, k++, lr.auc()); } assertEquals(1, lr.auc(), 0.2); } assertEquals(1, lr.auc(), 0.1); }
@Test public void crossFoldLearnerRoundTrip() throws IOException { CrossFoldLearner learner = new CrossFoldLearner(5, 2, 5, new L1()); train(learner, 100); CrossFoldLearner olr3 = roundTrip(learner, CrossFoldLearner.class); double auc1 = learner.auc(); assertTrue(auc1 > 0.85); assertEquals(auc1, learner.auc(), 1.0e-6); assertEquals(auc1, olr3.auc(), 1.0e-6); train(learner, 100); train(learner, 100); train(olr3, 100); assertEquals(learner.auc(), learner.auc(), 0.02); assertEquals(learner.auc(), olr3.auc(), 0.02); double auc2 = learner.auc(); assertTrue(auc2 > auc1); learner.close(); olr3.close(); }