public void ClassificationRandomModelSelectingEnsembleLearner_Learn() { var learners = new IIndexedLearner <ProbabilityPrediction>[] { new ClassificationDecisionTreeLearner(2), new ClassificationDecisionTreeLearner(5), new ClassificationDecisionTreeLearner(7), new ClassificationDecisionTreeLearner(9), new ClassificationDecisionTreeLearner(11), new ClassificationDecisionTreeLearner(21), new ClassificationDecisionTreeLearner(23), new ClassificationDecisionTreeLearner(1), new ClassificationDecisionTreeLearner(14), new ClassificationDecisionTreeLearner(17), new ClassificationDecisionTreeLearner(19), new ClassificationDecisionTreeLearner(33) }; var sut = new ClassificationRandomModelSelectingEnsembleLearner(learners, 5); var(observations, targets) = DataSetUtilities.LoadGlassDataSet(); var model = sut.Learn(observations, targets); var predictions = model.PredictProbability(observations); var metric = new LogLossClassificationProbabilityMetric(); var actual = metric.Error(targets, predictions); Assert.AreEqual(0.60969181130388794, actual, 0.0001); }
public void ClassificationModelSelectingEnsembleLearner_Learn_Start_With_3_Models() { var learners = new IIndexedLearner <ProbabilityPrediction>[] { new ClassificationDecisionTreeLearner(2), new ClassificationDecisionTreeLearner(5), new ClassificationDecisionTreeLearner(7), new ClassificationDecisionTreeLearner(9), new ClassificationDecisionTreeLearner(11), new ClassificationDecisionTreeLearner(21), new ClassificationDecisionTreeLearner(23), new ClassificationDecisionTreeLearner(1), new ClassificationDecisionTreeLearner(14), new ClassificationDecisionTreeLearner(17), new ClassificationDecisionTreeLearner(19), new ClassificationDecisionTreeLearner(33) }; var metric = new LogLossClassificationProbabilityMetric(); var ensembleStrategy = new MeanProbabilityClassificationEnsembleStrategy(); var ensembleSelection = new ForwardSearchClassificationEnsembleSelection(metric, ensembleStrategy, 5, 3, true); var sut = new ClassificationModelSelectingEnsembleLearner(learners, new RandomCrossValidation <ProbabilityPrediction>(5, 23), ensembleStrategy, ensembleSelection); var(observations, targets) = DataSetUtilities.LoadGlassDataSet(); var model = sut.Learn(observations, targets); var predictions = model.PredictProbability(observations); var actual = metric.Error(targets, predictions); Assert.AreEqual(0.55183985816428427, actual, 0.0001); }
public void ClassificationEnsembleLearner_Learn_Indexed() { var learners = new IIndexedLearner <ProbabilityPrediction>[] { new ClassificationDecisionTreeLearner(2), new ClassificationDecisionTreeLearner(5), new ClassificationDecisionTreeLearner(7), new ClassificationDecisionTreeLearner(9) }; var sut = new ClassificationEnsembleLearner(learners, new MeanProbabilityClassificationEnsembleStrategy()); var(observations, targets) = DataSetUtilities.LoadGlassDataSet(); var indices = Enumerable.Range(0, 25).ToArray(); var model = sut.Learn(observations, targets, indices); var predictions = model.Predict(observations); var metric = new TotalErrorClassificationMetric <double>(); var actual = metric.Error(targets, predictions); Assert.AreEqual(0.67289719626168221, actual, 0.0001); }
public void ClassificationBackwardEliminationModelSelectingEnsembleLearner_Learn_Indexed() { var learners = new IIndexedLearner <ProbabilityPrediction>[] { new ClassificationDecisionTreeLearner(2), new ClassificationDecisionTreeLearner(5), new ClassificationDecisionTreeLearner(7), new ClassificationDecisionTreeLearner(9), new ClassificationDecisionTreeLearner(11), new ClassificationDecisionTreeLearner(21), new ClassificationDecisionTreeLearner(23), new ClassificationDecisionTreeLearner(1), new ClassificationDecisionTreeLearner(14), new ClassificationDecisionTreeLearner(17), new ClassificationDecisionTreeLearner(19), new ClassificationDecisionTreeLearner(33) }; var metric = new LogLossClassificationProbabilityMetric(); var ensembleStrategy = new MeanProbabilityClassificationEnsembleStrategy(); var sut = new ClassificationBackwardEliminationModelSelectingEnsembleLearner(learners, 5, new RandomCrossValidation <ProbabilityPrediction>(5, 23), ensembleStrategy, metric); var(observations, targets) = DataSetUtilities.LoadGlassDataSet(); var indices = Enumerable.Range(0, 25).ToArray(); var model = sut.Learn(observations, targets, indices); var predictions = model.PredictProbability(observations); var actual = metric.Error(targets, predictions); Assert.AreEqual(2.3682546920482164, actual, 0.0001); }
public void ClassificationRandomModelSelectingEnsembleLearner_Learn_Without_Replacement() { var learners = new IIndexedLearner <ProbabilityPrediction>[] { new ClassificationDecisionTreeLearner(2), new ClassificationDecisionTreeLearner(5), new ClassificationDecisionTreeLearner(7), new ClassificationDecisionTreeLearner(9), new ClassificationDecisionTreeLearner(11), new ClassificationDecisionTreeLearner(21), new ClassificationDecisionTreeLearner(23), new ClassificationDecisionTreeLearner(1), new ClassificationDecisionTreeLearner(14), new ClassificationDecisionTreeLearner(17), new ClassificationDecisionTreeLearner(19), new ClassificationDecisionTreeLearner(33) }; var metric = new LogLossClassificationProbabilityMetric(); var ensembleStrategy = new MeanProbabilityClassificationEnsembleStrategy(); var sut = new ClassificationRandomModelSelectingEnsembleLearner(learners, 5, new StratifiedCrossValidation <ProbabilityPrediction>(5, 23), ensembleStrategy, metric, 1, false); var(observations, targets) = DataSetUtilities.LoadGlassDataSet(); var model = sut.Learn(observations, targets); var predictions = model.PredictProbability(observations); var actual = metric.Error(targets, predictions); Assert.AreEqual(0.5805783545646459, actual, 0.0001); }
public void ClassificationStackingEnsembleLearner_CreateMetaFeatures_Then_Learn() { var learners = new IIndexedLearner <ProbabilityPrediction>[] { new ClassificationDecisionTreeLearner(2), new ClassificationDecisionTreeLearner(5), new ClassificationDecisionTreeLearner(7), new ClassificationDecisionTreeLearner(9) }; var sut = new ClassificationStackingEnsembleLearner(learners, new ClassificationDecisionTreeLearner(9), new RandomCrossValidation <ProbabilityPrediction>(5, 23), false); var(observations, targets) = DataSetUtilities.LoadGlassDataSet(); var metaObservations = sut.LearnMetaFeatures(observations, targets); var model = sut.LearnStackingModel(observations, metaObservations, targets); var predictions = model.Predict(observations); var metric = new TotalErrorClassificationMetric <double>(); var actual = metric.Error(targets, predictions); Assert.AreEqual(0.63551401869158874, actual, 0.0001); }
public void ClassificationBackwardEliminationModelSelectingEnsembleLearner_CreateMetaFeatures_Then_Learn() { var learners = new IIndexedLearner <ProbabilityPrediction>[] { new ClassificationDecisionTreeLearner(2), new ClassificationDecisionTreeLearner(5), new ClassificationDecisionTreeLearner(7), new ClassificationDecisionTreeLearner(9), new ClassificationDecisionTreeLearner(11), new ClassificationDecisionTreeLearner(21), new ClassificationDecisionTreeLearner(23), new ClassificationDecisionTreeLearner(1), new ClassificationDecisionTreeLearner(14), new ClassificationDecisionTreeLearner(17), new ClassificationDecisionTreeLearner(19), new ClassificationDecisionTreeLearner(33) }; var sut = new ClassificationBackwardEliminationModelSelectingEnsembleLearner(learners, 5); var(observations, targets) = DataSetUtilities.LoadGlassDataSet(); var metaObservations = sut.LearnMetaFeatures(observations, targets); var model = sut.SelectModels(observations, metaObservations, targets); var predictions = model.PredictProbability(observations); var metric = new LogLossClassificationProbabilityMetric(); var actual = metric.Error(targets, predictions); Assert.AreEqual(0.52351727716455632, actual, 0.0001); }
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); }
double ClassificationDecisionTreeLearner_Learn_Glass(int treeDepth) { var(observations, targets) = DataSetUtilities.LoadGlassDataSet(); var sut = new ClassificationDecisionTreeLearner(treeDepth, 1, observations.ColumnCount, 0.001, 42); var model = sut.Learn(observations, targets); var predictions = model.Predict(observations); var evaluator = new TotalErrorClassificationMetric <double>(); var error = evaluator.Error(targets, predictions); return(error); }
public void RegressionRandomForestLearnerTest_Learn_Glass_100_Trees_Parallel() { var(observations, targets) = DataSetUtilities.LoadGlassDataSet(); var sut = new RegressionRandomForestLearner(100, 1, 100, 1, 0.0001, 1.0, 42, true); var model = sut.Learn(observations, targets); var predictions = model.Predict(observations); var evaluator = new MeanSquaredErrorRegressionMetric(); var error = evaluator.Error(targets, predictions); Assert.AreEqual(0.22701441864756075, error, m_delta); }
public void ClassificationAdaBoostLearner_Learn_Glass() { var(observations, targets) = DataSetUtilities.LoadGlassDataSet(); var sut = new ClassificationAdaBoostLearner(10, 1, 5); 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.0, actual); }
double RegressionRandomForestLearnerTest_Learn_Glass(int trees, double subSampleRatio = 1.0) { var(observations, targets) = DataSetUtilities.LoadGlassDataSet(); var sut = new RegressionRandomForestLearner(trees, 1, 100, 1, 0.0001, subSampleRatio, 42, false); var model = sut.Learn(observations, targets); var predictions = model.Predict(observations); var evaluator = new MeanSquaredErrorRegressionMetric(); var error = evaluator.Error(targets, predictions); return(error); }
double ClassificationExtremelyRandomizedTreesLearner_Learn_Glass(int trees, double subSampleRatio = 1.0) { var(observations, targets) = DataSetUtilities.LoadGlassDataSet(); var sut = new ClassificationExtremelyRandomizedTreesLearner(trees, 1, 100, 1, 0.0001, subSampleRatio, 42, false); var model = sut.Learn(observations, targets); var predictions = model.Predict(observations); var evaluator = new TotalErrorClassificationMetric <double>(); var error = evaluator.Error(targets, predictions); return(error); }
public void RegressionAdaBoostLearner_Learn_Glass() { var(observations, targets) = DataSetUtilities.LoadGlassDataSet(); var sut = new RegressionAdaBoostLearner(10); var model = sut.Learn(observations, targets); var predictions = model.Predict(observations); var evaluator = new MeanAbsolutErrorRegressionMetric(); var actual = evaluator.Error(targets, predictions); Assert.AreEqual(0.54723570404775324, actual); }
public void ClassificationRandomForestLearner_Learn_Glass_100_Trees_Parallel() { var(observations, targets) = DataSetUtilities.LoadGlassDataSet(); var sut = new ClassificationRandomForestLearner(100, 1, 100, 1, 0.0001, 1.0, 42, true); var model = sut.Learn(observations, targets); var predictions = model.Predict(observations); var evaluator = new TotalErrorClassificationMetric <double>(); var error = evaluator.Error(targets, predictions); Assert.AreEqual(0.018691588785046728, error, m_delta); }
public void RegressionXGBoostLearner_Learn() { var(observations, targets) = DataSetUtilities.LoadGlassDataSet(); var sut = CreateLearner(); using (var model = sut.Learn(observations, targets)) { var predictions = model.Predict(observations); var evaluator = new MeanSquaredErrorRegressionMetric(); var error = evaluator.Error(targets, predictions); Assert.AreEqual(0.0795934933096642, error, m_delta); } }
double ClassificationDecisionTreeLearner_Learn_Glass_Weighted(int treeDepth, double weight) { var(observations, targets) = DataSetUtilities.LoadGlassDataSet(); var weights = targets.Select(v => Weight(v, 1, weight)).ToArray(); var sut = new ClassificationDecisionTreeLearner(treeDepth, 1, observations.ColumnCount, 0.001, 42); var model = sut.Learn(observations, targets, weights); var predictions = model.Predict(observations); var evaluator = new TotalErrorClassificationMetric <double>(); Trace.WriteLine(evaluator.ErrorString(targets, predictions)); var error = evaluator.Error(targets, predictions); return(error); }
public void ClassificationXGBoostLearner_Learn() { var(observations, targets) = DataSetUtilities.LoadGlassDataSet(); var sut = CreateLearner(); using (var model = sut.Learn(observations, targets)) { var predictions = model.Predict(observations); var evaluator = new TotalErrorClassificationMetric <double>(); var error = evaluator.Error(targets, predictions); Assert.AreEqual(0.17757009345794392, error, m_delta); } }
public void BestFirstTreeBuilder_Build_Leaf_Nodes_4() { var(observations, targets) = DataSetUtilities.LoadGlassDataSet(); var sut = new DecisionTreeLearner(new BestFirstTreeBuilder(2000, 4, observations.ColumnCount, 0.000001, 42, new OnlyUniqueThresholdsSplitSearcher(1), new GiniClassificationImpurityCalculator())); var model = new ClassificationDecisionTreeModel(sut.Learn(observations, targets)); var predictions = model.Predict(observations); var evaluator = new TotalErrorClassificationMetric <double>(); var actual = evaluator.Error(targets, predictions); Assert.AreEqual(0.37383177570093457, actual, 0.00001); }
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 ClassificationRandomForestLearner_Learn_Glass_100_Indices() { var(observations, targets) = DataSetUtilities.LoadGlassDataSet(); var sut = new ClassificationRandomForestLearner(100, 1, 100, 1, 0.0001, 1.0, 42, 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 evaluator = new TotalErrorClassificationMetric <double>(); var error = evaluator.Error(targets, predictions); Assert.AreEqual(0.098130841121495324, error, m_delta); }
public void RegressionXGBoostModel_Save_Load() { var(observations, targets) = DataSetUtilities.LoadGlassDataSet(); var learner = CreateLearner(); var sut = learner.Learn(observations, targets); var predictions = sut.Predict(observations); var modelFilePath = "model.xgb"; using (var sutPreSave = learner.Learn(observations, targets)) { AssertModel(observations, targets, sutPreSave); sutPreSave.Save(modelFilePath); } using (var sutAfterSave = RegressionXGBoostModel.Load(modelFilePath)) { AssertModel(observations, targets, sutAfterSave); } }
public void RegressionRandomForestLearnerTest_Learn_Glass_100_Indices() { var(observations, targets) = DataSetUtilities.LoadGlassDataSet(); var sut = new RegressionRandomForestLearner(100, 1, 100, 1, 0.0001, 1.0, 42, 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 evaluator = new MeanSquaredErrorRegressionMetric(); var error = evaluator.Error(targets, predictions); Assert.AreEqual(0.49709813080602938, error, m_delta); }
public void RegressionXGBoostModel_Predict_Single() { var(observations, targets) = DataSetUtilities.LoadGlassDataSet(); var learner = CreateLearner(); using (var sut = learner.Learn(observations, targets)) { var rows = targets.Length; var predictions = new double[rows]; for (int i = 0; i < rows; i++) { predictions[i] = sut.Predict(observations.Row(i)); } var evaluator = new MeanSquaredErrorRegressionMetric(); var error = evaluator.Error(targets, predictions); Assert.AreEqual(0.0795934933096642, error, m_delta); } }
public void ClassificationXGBoostLearner_Learn_indexed() { var(observations, targets) = DataSetUtilities.LoadGlassDataSet(); var indices = Enumerable.Range(0, targets.Length).ToArray(); indices.Shuffle(new Random(42)); indices = indices.Take((int)(targets.Length * 0.7)) .ToArray(); var sut = CreateLearner(); using (var model = sut.Learn(observations, targets, indices)) { var predictions = model.Predict(observations); var evaluator = new TotalErrorClassificationMetric <double>(); var error = evaluator.Error(targets, predictions); Assert.AreEqual(0.228971962616822, error, m_delta); } }
public void ClassificationAdaBoostLearner_Learn_Glass_Indexed() { var(observations, targets) = DataSetUtilities.LoadGlassDataSet(); var sut = new ClassificationAdaBoostLearner(10, 1, 5); 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.0, actual); }
public void RegressionXGBoostLearner_Learn_Indexed() { var(observations, targets) = DataSetUtilities.LoadGlassDataSet(); var indices = Enumerable.Range(0, targets.Length).ToArray(); indices.Shuffle(new Random(42)); indices = indices.Take((int)(targets.Length * 0.7)) .ToArray(); var sut = CreateLearner(); using (var model = sut.Learn(observations, targets, indices)) { var predictions = model.Predict(observations); var evaluator = new MeanSquaredErrorRegressionMetric(); var error = evaluator.Error(targets, predictions); Assert.AreEqual(0.33589853954956522, error, m_delta); } }
public void ClassificationBinomialGradientBoostLearner_MultiClass_Stochastic_FeaturePrSplit_Learn_Indexed() { var(observations, targets) = DataSetUtilities.LoadGlassDataSet(); 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); }
public void RegressionAbsoluteLossGradientBoostLearner_Learn_Indexed() { var(observations, targets) = DataSetUtilities.LoadGlassDataSet(); var sut = new RegressionAbsoluteLossGradientBoostLearner(50, 0.1, 3, 1, 1e-6, 1.0, 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 MeanAbsolutErrorRegressionMetric(); var actual = evaluator.Error(indexedTargets, indexedPredictions); Assert.AreEqual(0.41246374405350877, actual, 0.0001); }