public void ClassificationGradientBoostLearner_LearnWithEarlyStopping_ToFewIterations() { var(observations, targets) = DataSetUtilities.LoadGlassDataSet(); var splitter = new StratifiedTrainingTestIndexSplitter <double>(0.6, 1234); var split = splitter.SplitSet(observations, targets); var sut = new ClassificationBinomialGradientBoostLearner(10, 0.01, 9, 1, 1e-6, .5, 1); var evaluator = new TotalErrorClassificationMetric <double>(); var model = sut.LearnWithEarlyStopping(split.TrainingSet.Observations, split.TrainingSet.Targets, split.TestSet.Observations, split.TestSet.Targets, evaluator, 10); }
public void ClassificationBinomialGradientBoostLearner_MultiClass_Learn() { var(observations, targets) = DataSetUtilities.LoadGlassDataSet(); var sut = new ClassificationBinomialGradientBoostLearner(30, 0.1, 3, 1, 1e-6, 1.0, 0, false); var model = sut.Learn(observations, targets); var predictions = model.Predict(observations); var evaluator = new TotalErrorClassificationMetric <double>(); var actual = evaluator.Error(targets, predictions); Assert.AreEqual(0.018691588785046728, actual); }
public void ClassificationBinomialGradientBoostLearner_Stochastic_Learn() { var(observations, targets) = DataSetUtilities.LoadAptitudeDataSet(); var sut = new ClassificationBinomialGradientBoostLearner(50, 0.1, 3, 1, 1e-6, .3, 0, false); var model = sut.Learn(observations, targets); var predictions = model.Predict(observations); var evaluator = new TotalErrorClassificationMetric <double>(); var actual = evaluator.Error(targets, predictions); Assert.AreEqual(0.076923076923076927, actual); }
public void ClassificationGradientBoostLearner_LearnWithEarlyStopping_ToFewIterations() { var parser = new CsvParser(() => new StringReader(Resources.Glass)); var observations = parser.EnumerateRows(r => r != "Target").ToF64Matrix(); var targets = parser.EnumerateRows("Target").ToF64Vector(); var splitter = new StratifiedTrainingTestIndexSplitter <double>(0.6, 1234); var split = splitter.SplitSet(observations, targets); var sut = new ClassificationBinomialGradientBoostLearner(10, 0.01, 9, 1, 1e-6, .5, 1); var evaluator = new TotalErrorClassificationMetric <double>(); var model = sut.LearnWithEarlyStopping(split.TrainingSet.Observations, split.TrainingSet.Targets, split.TestSet.Observations, split.TestSet.Targets, evaluator, 10); }
public void ClassificationBinomialGradientBoostLearner_Stochastic_Learn() { var parser = new CsvParser(() => new StringReader(Resources.AptitudeData)); var observations = parser.EnumerateRows("AptitudeTestScore", "PreviousExperience_month").ToF64Matrix(); var targets = parser.EnumerateRows("Pass").ToF64Vector(); var sut = new ClassificationBinomialGradientBoostLearner(50, 0.1, 3, 1, 1e-6, .3, 0, false); var model = sut.Learn(observations, targets); var predictions = model.Predict(observations); var evaluator = new TotalErrorClassificationMetric <double>(); var actual = evaluator.Error(targets, predictions); Assert.AreEqual(0.076923076923076927, actual); }
public void ClassificationBinomialGradientBoostLearner_MultiClass_Stochastic_Learn() { var parser = new CsvParser(() => new StringReader(Resources.Glass)); var observations = parser.EnumerateRows(r => r != "Target").ToF64Matrix(); var targets = parser.EnumerateRows("Target").ToF64Vector(); var sut = new ClassificationBinomialGradientBoostLearner(30, 0.1, 3, 1, 1e-6, 0.5, 0, false); var model = sut.Learn(observations, targets); var predictions = model.Predict(observations); var evaluator = new TotalErrorClassificationMetric <double>(); var actual = evaluator.Error(targets, predictions); Assert.AreEqual(0.046728971962616821, actual); }
public void ClassificationGradientBoostLearner_LearnWithEarlyStopping() { var(observations, targets) = DataSetUtilities.LoadGlassDataSet(); var splitter = new StratifiedTrainingTestIndexSplitter <double>(0.6, 1234); var split = splitter.SplitSet(observations, targets); var sut = new ClassificationBinomialGradientBoostLearner(100, 0.01, 9, 1, 1e-6, .5, 0, false); var evaluator = new TotalErrorClassificationMetric <double>(); var model = sut.LearnWithEarlyStopping(split.TrainingSet.Observations, split.TrainingSet.Targets, split.TestSet.Observations, split.TestSet.Targets, evaluator, 10); var predictions = model.Predict(split.TestSet.Observations); var actual = evaluator.Error(split.TestSet.Targets, predictions); Assert.AreEqual(0.16279069767441862, actual, 0.000001); Assert.AreEqual(90, model.Trees.First().ToArray().Length); }
public void ClassificationGradientBoostLearner_LearnWithEarlyStopping() { var parser = new CsvParser(() => new StringReader(Resources.Glass)); var observations = parser.EnumerateRows(r => r != "Target").ToF64Matrix(); var targets = parser.EnumerateRows("Target").ToF64Vector(); var splitter = new StratifiedTrainingTestIndexSplitter <double>(0.6, 1234); var split = splitter.SplitSet(observations, targets); var sut = new ClassificationBinomialGradientBoostLearner(100, 0.01, 9, 1, 1e-6, .5, 0, false); var evaluator = new TotalErrorClassificationMetric <double>(); var model = sut.LearnWithEarlyStopping(split.TrainingSet.Observations, split.TrainingSet.Targets, split.TestSet.Observations, split.TestSet.Targets, evaluator, 10); var predictions = model.Predict(split.TestSet.Observations); var actual = evaluator.Error(split.TestSet.Targets, predictions); Assert.AreEqual(0.16279069767441862, actual, 0.000001); Assert.AreEqual(90, model.Trees.First().ToArray().Length); }
public void ClassificationBinomialGradientBoostLearner_Stochastic_Learn_Indexed() { var(observations, targets) = DataSetUtilities.LoadAptitudeDataSet(); var sut = new ClassificationBinomialGradientBoostLearner(30, 0.1, 3, 1, 1e-6, .5, 0, false); var indices = Enumerable.Range(0, targets.Length).ToArray(); indices.Shuffle(new Random(42)); indices = indices.Take((int)(targets.Length * 0.7)) .ToArray(); var model = sut.Learn(observations, targets, indices); var predictions = model.Predict(observations); var indexedPredictions = predictions.GetIndices(indices); var indexedTargets = targets.GetIndices(indices); var evaluator = new TotalErrorClassificationMetric <double>(); var actual = evaluator.Error(indexedTargets, indexedPredictions); Assert.AreEqual(0.055555555555555552, actual); }
public void ClassificationBinomialGradientBoostLearner_Stochastic_Learn_Indexed() { var parser = new CsvParser(() => new StringReader(Resources.AptitudeData)); var observations = parser.EnumerateRows("AptitudeTestScore", "PreviousExperience_month").ToF64Matrix(); var targets = parser.EnumerateRows("Pass").ToF64Vector(); var sut = new ClassificationBinomialGradientBoostLearner(30, 0.1, 3, 1, 1e-6, .5, 0, false); var indices = Enumerable.Range(0, targets.Length).ToArray(); indices.Shuffle(new Random(42)); indices = indices.Take((int)(targets.Length * 0.7)) .ToArray(); var model = sut.Learn(observations, targets, indices); var predictions = model.Predict(observations); var indexedPredictions = predictions.GetIndices(indices); var indexedTargets = targets.GetIndices(indices); var evaluator = new TotalErrorClassificationMetric <double>(); var actual = evaluator.Error(indexedTargets, indexedPredictions); Assert.AreEqual(0.055555555555555552, actual); }
public void ClassificationBinomialGradientBoostLearner_MultiClass_Stochastic_FeaturePrSplit_Learn_Indexed() { var parser = new CsvParser(() => new StringReader(Resources.Glass)); var observations = parser.EnumerateRows(v => v != "Target").ToF64Matrix(); var targets = parser.EnumerateRows("Target").ToF64Vector(); var sut = new ClassificationBinomialGradientBoostLearner(30, 0.1, 3, 1, 1e-6, 0.5, 3, false); var indices = Enumerable.Range(0, targets.Length).ToArray(); indices.Shuffle(new Random(42)); indices = indices.Take((int)(targets.Length * 0.7)) .ToArray(); var model = sut.Learn(observations, targets, indices); var predictions = model.Predict(observations); var indexedPredictions = predictions.GetIndices(indices); var indexedTargets = targets.GetIndices(indices); var evaluator = new TotalErrorClassificationMetric <double>(); var actual = evaluator.Error(indexedTargets, indexedPredictions); Assert.AreEqual(0.033557046979865772, actual); }