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 RegressionRandomModelSelectingEnsembleLearner_Learn_Indexed() { var learners = new IIndexedLearner <double>[] { new RegressionDecisionTreeLearner(2), new RegressionDecisionTreeLearner(5), new RegressionDecisionTreeLearner(7), new RegressionDecisionTreeLearner(9), new RegressionDecisionTreeLearner(11), new RegressionDecisionTreeLearner(21), new RegressionDecisionTreeLearner(23), new RegressionDecisionTreeLearner(1), new RegressionDecisionTreeLearner(14), new RegressionDecisionTreeLearner(17), new RegressionDecisionTreeLearner(19), new RegressionDecisionTreeLearner(33) }; var sut = new RegressionRandomModelSelectingEnsembleLearner(learners, 5); var(observations, targets) = DataSetUtilities.LoadDecisionTreeDataSet(); var indices = Enumerable.Range(0, 25).ToArray(); var model = sut.Learn(observations, targets, indices); var predictions = model.Predict(observations); var metric = new MeanSquaredErrorRegressionMetric(); var actual = metric.Error(targets, predictions); Assert.AreEqual(0.13601421174394385, actual, 0.0001); }
public void RegressionRandomModelSelectingEnsembleLearner_Learn_Start_With_3_Models() { var learners = new IIndexedLearner <double>[] { new RegressionDecisionTreeLearner(2), new RegressionDecisionTreeLearner(5), new RegressionDecisionTreeLearner(7), new RegressionDecisionTreeLearner(9), new RegressionDecisionTreeLearner(11), new RegressionDecisionTreeLearner(21), new RegressionDecisionTreeLearner(23), new RegressionDecisionTreeLearner(1), new RegressionDecisionTreeLearner(14), new RegressionDecisionTreeLearner(17), new RegressionDecisionTreeLearner(19), new RegressionDecisionTreeLearner(33) }; var metric = new MeanSquaredErrorRegressionMetric(); var sut = new RegressionRandomModelSelectingEnsembleLearner(learners, 5, new RandomCrossValidation <double>(5, 42), new MeanRegressionEnsembleStrategy(), metric, 3, false); var(observations, targets) = DataSetUtilities.LoadDecisionTreeDataSet(); var model = sut.Learn(observations, targets); var predictions = model.Predict(observations); var actual = metric.Error(targets, predictions); Assert.AreEqual(0.0090143589987671056, actual, 0.0001); }
public void RegressionStackingEnsembleModel_Predict_Multiple() { var(observations, targets) = DataSetUtilities.LoadAptitudeDataSet(); var learners = new IIndexedLearner <double>[] { new RegressionDecisionTreeLearner(2), new RegressionDecisionTreeLearner(5), new RegressionDecisionTreeLearner(7), new RegressionDecisionTreeLearner(9) }; var learner = new RegressionStackingEnsembleLearner(learners, new RegressionDecisionTreeLearner(9), new RandomCrossValidation <double>(5, 23), false); var sut = learner.Learn(observations, targets); var predictions = sut.Predict(observations); var metric = new MeanSquaredErrorRegressionMetric(); var actual = metric.Error(targets, predictions); Assert.AreEqual(0.26175213675213671, actual, 0.0000001); }
public void RegressionForwardSearchModelSelectingEnsembleLearner_Learn_Without_Replacement() { var learners = new IIndexedLearner <double>[] { new RegressionDecisionTreeLearner(2), new RegressionDecisionTreeLearner(5), new RegressionDecisionTreeLearner(7), new RegressionDecisionTreeLearner(9), new RegressionDecisionTreeLearner(11), new RegressionDecisionTreeLearner(21), new RegressionDecisionTreeLearner(23), new RegressionDecisionTreeLearner(1), new RegressionDecisionTreeLearner(14), new RegressionDecisionTreeLearner(17), new RegressionDecisionTreeLearner(19), new RegressionDecisionTreeLearner(33) }; var metric = new MeanSquaredErrorRegressionMetric(); var sut = new RegressionForwardSearchModelSelectingEnsembleLearner(learners, 5, new RandomCrossValidation <double>(5, 42), new MeanRegressionEnsembleStrategy(), metric, 1, false); var(observations, targets) = DataSetUtilities.LoadDecisionTreeDataSet(); var model = sut.Learn(observations, targets); var predictions = model.Predict(observations); var actual = metric.Error(targets, predictions); Assert.AreEqual(0.010316259438112841, actual, 0.0001); }
public void ClassificationEnsembleModel_GetVariableImportance() { var(observations, targets) = DataSetUtilities.LoadAptitudeDataSet(); var featureNameToIndex = new Dictionary <string, int> { { "AptitudeTestScore", 0 }, { "PreviousExperience_month", 1 } }; var learners = new IIndexedLearner <ProbabilityPrediction>[] { new ClassificationDecisionTreeLearner(2), new ClassificationDecisionTreeLearner(5), new ClassificationDecisionTreeLearner(7), new ClassificationDecisionTreeLearner(9) }; var learner = new ClassificationEnsembleLearner(learners, new MeanProbabilityClassificationEnsembleStrategy()); var sut = learner.Learn(observations, targets); var actual = sut.GetVariableImportance(featureNameToIndex); var expected = new Dictionary <string, double> { { "PreviousExperience_month", 100.0 }, { "AptitudeTestScore", 15.6771501925546 } }; Assert.AreEqual(expected.Count, actual.Count); var zip = expected.Zip(actual, (e, a) => new { Expected = e, Actual = a }); foreach (var item in zip) { Assert.AreEqual(item.Expected.Key, item.Actual.Key); Assert.AreEqual(item.Expected.Value, item.Actual.Value, 0.000001); } }
public void ClassificationEnsembleModel_PredictProbability_single() { var(observations, targets) = DataSetUtilities.LoadAptitudeDataSet(); var learners = new IIndexedLearner <ProbabilityPrediction>[] { new ClassificationDecisionTreeLearner(2), new ClassificationDecisionTreeLearner(5), new ClassificationDecisionTreeLearner(7), new ClassificationDecisionTreeLearner(9) }; var learner = new ClassificationEnsembleLearner(learners, new MeanProbabilityClassificationEnsembleStrategy()); var sut = learner.Learn(observations, targets); var rows = targets.Length; var predictions = new ProbabilityPrediction[rows]; for (int i = 0; i < rows; i++) { predictions[i] = sut.PredictProbability(observations.Row(i)); } var metric = new LogLossClassificationProbabilityMetric(); var actual = metric.Error(targets, predictions); Assert.AreEqual(0.32562112824941963, actual, 0.0000001); }
public void SharpLearning_Example() { // Load data var(observations, targets) = DataSetUtilities.LoadWinequalityWhite(); // transform data for neural net var transform = new MinMaxTransformer(0.0, 1.0); transform.Transform(observations, observations); var featureCount = observations.ColumnCount; // define the neural net. var net = new NeuralNet(); net.Add(new InputLayer(inputUnits: featureCount)); net.Add(new DenseLayer(32, Activation.Relu)); net.Add(new DenseLayer(32, Activation.Relu)); net.Add(new SquaredErrorRegressionLayer()); // using only 10 iteration to make the example run faster. // using square error as error metric. This is only used for reporting progress. var learner = new RegressionNeuralNetLearner(net, iterations: 10, loss: new SquareLoss(), optimizerMethod: OptimizerMethod.Adam); var cv = new RandomCrossValidation <double>(10, seed: 232); var predictions = cv.CrossValidate(learner, observations, targets); Trace.WriteLine(FormatErrorString(targets, predictions)); }
public void RegressionEnsembleModel_GetRawVariableImportance() { var(observations, targets) = DataSetUtilities.LoadAptitudeDataSet(); var learners = new IIndexedLearner <double>[] { new RegressionDecisionTreeLearner(2), new RegressionDecisionTreeLearner(5), new RegressionDecisionTreeLearner(7), new RegressionDecisionTreeLearner(9) }; var learner = new RegressionEnsembleLearner(learners, new MeanRegressionEnsembleStrategy()); var sut = learner.Learn(observations, targets); var actual = sut.GetRawVariableImportance(); var expected = new double[] { 100.0, 3.46067371526717 }; Assert.AreEqual(expected.Length, actual.Length); for (int i = 0; i < expected.Length; i++) { Assert.AreEqual(expected[i], actual[i], 0.000001); } }
public void ClassificationStackingEnsembleModel_PredictProbability_single() { var(observations, targets) = DataSetUtilities.LoadAptitudeDataSet(); var learners = new IIndexedLearner <ProbabilityPrediction>[] { new ClassificationDecisionTreeLearner(2), new ClassificationDecisionTreeLearner(5), new ClassificationDecisionTreeLearner(7), new ClassificationDecisionTreeLearner(9) }; var learner = new ClassificationStackingEnsembleLearner(learners, new ClassificationDecisionTreeLearner(9), new RandomCrossValidation <ProbabilityPrediction>(5, 23), false); var sut = learner.Learn(observations, targets); var rows = targets.Length; var predictions = new ProbabilityPrediction[rows]; for (int i = 0; i < rows; i++) { predictions[i] = sut.PredictProbability(observations.Row(i)); } var metric = new LogLossClassificationProbabilityMetric(); var actual = metric.Error(targets, predictions); Assert.AreEqual(0.6696598716465223, actual, 0.0000001); }
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 ClassificationStackingEnsembleModel_Predict_Multiple() { var(observations, targets) = DataSetUtilities.LoadAptitudeDataSet(); var learners = new IIndexedLearner <ProbabilityPrediction>[] { new ClassificationDecisionTreeLearner(2), new ClassificationDecisionTreeLearner(5), new ClassificationDecisionTreeLearner(7), new ClassificationDecisionTreeLearner(9) }; var learner = new ClassificationStackingEnsembleLearner(learners, new ClassificationDecisionTreeLearner(9), new RandomCrossValidation <ProbabilityPrediction>(5, 23), false); var sut = learner.Learn(observations, targets); var predictions = sut.Predict(observations); var metric = new TotalErrorClassificationMetric <double>(); var actual = metric.Error(targets, predictions); Assert.AreEqual(0.34615384615384615, actual, 0.0000001); }
public void ClassificationStackingEnsembleModel_GetRawVariableImportance() { var(observations, targets) = DataSetUtilities.LoadAptitudeDataSet(); var learners = new IIndexedLearner <ProbabilityPrediction>[] { new ClassificationDecisionTreeLearner(2), new ClassificationDecisionTreeLearner(5), new ClassificationDecisionTreeLearner(7), new ClassificationDecisionTreeLearner(9) }; var learner = new ClassificationStackingEnsembleLearner(learners, new ClassificationDecisionTreeLearner(9), new RandomCrossValidation <ProbabilityPrediction>(5, 23), false); var sut = learner.Learn(observations, targets); var actual = sut.GetRawVariableImportance(); var expected = new double[] { 0.12545787545787546, 0, 0.16300453932032882, 0.0345479082321188, 0.15036245805476572, 0, 0, 0 }; Assert.AreEqual(expected.Length, actual.Length); for (int i = 0; i < expected.Length; i++) { Assert.AreEqual(expected[i], actual[i], 0.000001); } }
public void GBMTree_AddRawFeatureImportances() { var(observations, targets) = DataSetUtilities.LoadDecisionTreeDataSet(); var inSample = targets.Select(t => true).ToArray(); var orderedElements = new int[observations.ColumnCount][]; var rows = observations.RowCount; for (int i = 0; i < observations.ColumnCount; i++) { var feature = observations.Column(i); var indices = Enumerable.Range(0, rows).ToArray(); feature.SortWith(indices); orderedElements[i] = indices; } var sut = new GBMDecisionTreeLearner(10); var tree = sut.Learn(observations, targets, targets, targets, orderedElements, inSample); var actual = new double[observations.ColumnCount]; tree.AddRawVariableImportances(actual); var expected = new double[] { 0.0, 105017.48701572006 }; Assert.AreEqual(expected.Length, actual.Length); Assert.AreEqual(expected[0], actual[0], 0.01); Assert.AreEqual(expected[1], actual[1], 0.01); }
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 RegressionEnsembleModel_Predict_single() { var(observations, targets) = DataSetUtilities.LoadAptitudeDataSet(); var learners = new IIndexedLearner <double>[] { new RegressionDecisionTreeLearner(2), new RegressionDecisionTreeLearner(5), new RegressionDecisionTreeLearner(7), new RegressionDecisionTreeLearner(9) }; var learner = new RegressionEnsembleLearner(learners, new MeanRegressionEnsembleStrategy()); 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 metric = new MeanSquaredErrorRegressionMetric(); var actual = metric.Error(targets, predictions); Assert.AreEqual(0.033195970695970689, actual, 0.0000001); }
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 GBMDecisionTreeLearner_Learn() { var(observations, targets) = DataSetUtilities.LoadDecisionTreeDataSet(); var inSample = targets.Select(t => true).ToArray(); var orderedElements = new int[observations.ColumnCount][]; var rows = observations.RowCount; for (int i = 0; i < observations.ColumnCount; i++) { var feature = observations.Column(i); var indices = Enumerable.Range(0, rows).ToArray(); feature.SortWith(indices); orderedElements[i] = indices; } var sut = new GBMDecisionTreeLearner(10); var tree = sut.Learn(observations, targets, targets, targets, orderedElements, inSample); var predictions = tree.Predict(observations); var evaluator = new MeanSquaredErrorRegressionMetric(); var actual = evaluator.Error(targets, predictions); Assert.AreEqual(0.0046122425037232661, actual); }
public void ClassificationEnsembleModel_GetRawVariableImportance() { var(observations, targets) = DataSetUtilities.LoadAptitudeDataSet(); var learners = new IIndexedLearner <ProbabilityPrediction>[] { new ClassificationDecisionTreeLearner(2), new ClassificationDecisionTreeLearner(5), new ClassificationDecisionTreeLearner(7), new ClassificationDecisionTreeLearner(9) }; var learner = new ClassificationEnsembleLearner(learners, new MeanProbabilityClassificationEnsembleStrategy()); var sut = learner.Learn(observations, targets); var actual = sut.GetRawVariableImportance(); var expected = new double[] { 100.0, 15.6771501925546 }; Assert.AreEqual(expected.Length, actual.Length); for (int i = 0; i < expected.Length; i++) { Assert.AreEqual(expected[i], actual[i], 0.000001); } }
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 RegressionStackingEnsembleModel_GetRawVariableImportance() { var(observations, targets) = DataSetUtilities.LoadAptitudeDataSet(); var learners = new IIndexedLearner <double>[] { new RegressionDecisionTreeLearner(2), new RegressionDecisionTreeLearner(5), new RegressionDecisionTreeLearner(7), new RegressionDecisionTreeLearner(9) }; var learner = new RegressionStackingEnsembleLearner(learners, new RegressionDecisionTreeLearner(9), new RandomCrossValidation <double>(5, 23), false); var sut = learner.Learn(observations, targets); var actual = sut.GetRawVariableImportance(); var expected = new double[] { 0.255311355311355, 0.525592463092463, 0.753846153846154, 0.0128205128205128 }; Assert.AreEqual(expected.Length, actual.Length); for (int i = 0; i < expected.Length; i++) { Assert.AreEqual(expected[i], actual[i], 0.000001); } }
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 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 RegressionStackingEnsembleLearner_CreateMetaFeatures_Then_Learn() { var learners = new IIndexedLearner <double>[] { new RegressionDecisionTreeLearner(2), new RegressionDecisionTreeLearner(5), new RegressionDecisionTreeLearner(7), new RegressionDecisionTreeLearner(9) }; var sut = new RegressionStackingEnsembleLearner(learners, new RegressionDecisionTreeLearner(9), new RandomCrossValidation <double>(5, 23), false); var(observations, targets) = DataSetUtilities.LoadDecisionTreeDataSet(); var metaObservations = sut.LearnMetaFeatures(observations, targets); var model = sut.LearnStackingModel(observations, metaObservations, targets); var predictions = model.Predict(observations); var evaluator = new MeanSquaredErrorRegressionMetric(); var actual = evaluator.Error(targets, predictions); Assert.AreEqual(0.06951934687172627, actual, 0.0001); }
public void ClassificationAdaBoostModel_GetVariableImportance() { var(observations, targets) = DataSetUtilities.LoadAptitudeDataSet(); var featureNameToIndex = new Dictionary <string, int> { { "AptitudeTestScore", 0 }, { "PreviousExperience_month", 1 } }; var learner = new ClassificationAdaBoostLearner(10, 1, 3); var sut = learner.Learn(observations, targets); var actual = sut.GetVariableImportance(featureNameToIndex); var expected = new Dictionary <string, double> { { "PreviousExperience_month", 100.0 }, { "AptitudeTestScore", 24.0268096428771 } }; Assert.AreEqual(expected.Count, actual.Count); var zip = expected.Zip(actual, (e, a) => new { Expected = e, Actual = a }); foreach (var item in zip) { Assert.AreEqual(item.Expected.Key, item.Actual.Key); Assert.AreEqual(item.Expected.Value, item.Actual.Value, 0.000001); } }
public void RegressionStackingEnsembleLearner_Learn_Indexed() { var learners = new IIndexedLearner <double>[] { new RegressionDecisionTreeLearner(2), new RegressionDecisionTreeLearner(5), new RegressionDecisionTreeLearner(7), new RegressionDecisionTreeLearner(9) }; var sut = new RegressionStackingEnsembleLearner(learners, new RegressionDecisionTreeLearner(9), new RandomCrossValidation <double>(5, 23), false); var(observations, targets) = DataSetUtilities.LoadDecisionTreeDataSet(); var indices = Enumerable.Range(0, 25).ToArray(); var model = sut.Learn(observations, targets, indices); var predictions = model.Predict(observations); var evaluator = new MeanSquaredErrorRegressionMetric(); var actual = evaluator.Error(targets, predictions); Assert.AreEqual(0.133930222950635, actual, 0.0001); }
public void RegressionRandomModelSelectingEnsembleLearner_Learn() { var learners = new IIndexedLearner <double>[] { new RegressionDecisionTreeLearner(2), new RegressionDecisionTreeLearner(5), new RegressionDecisionTreeLearner(7), new RegressionDecisionTreeLearner(9), new RegressionDecisionTreeLearner(11), new RegressionDecisionTreeLearner(21), new RegressionDecisionTreeLearner(23), new RegressionDecisionTreeLearner(1), new RegressionDecisionTreeLearner(14), new RegressionDecisionTreeLearner(17), new RegressionDecisionTreeLearner(19), new RegressionDecisionTreeLearner(33) }; var sut = new RegressionRandomModelSelectingEnsembleLearner(learners, 5); var(observations, targets) = DataSetUtilities.LoadDecisionTreeDataSet(); var model = sut.Learn(observations, targets); var predictions = model.Predict(observations); var metric = new MeanSquaredErrorRegressionMetric(); var actual = metric.Error(targets, predictions); Assert.AreEqual(0.017238327841614508, actual, 0.0001); }
public void RegressionBackwardEliminationModelSelectingEnsembleLearner_CreateMetaFeatures_Then_Learn() { var learners = new IIndexedLearner <double>[] { new RegressionDecisionTreeLearner(2), new RegressionDecisionTreeLearner(5), new RegressionDecisionTreeLearner(7), new RegressionDecisionTreeLearner(9), new RegressionDecisionTreeLearner(11), new RegressionDecisionTreeLearner(21), new RegressionDecisionTreeLearner(23), new RegressionDecisionTreeLearner(1), new RegressionDecisionTreeLearner(14), new RegressionDecisionTreeLearner(17), new RegressionDecisionTreeLearner(19), new RegressionDecisionTreeLearner(33) }; var sut = new RegressionBackwardEliminationModelSelectingEnsembleLearner(learners, 5); var(observations, targets) = DataSetUtilities.LoadDecisionTreeDataSet(); var metaObservations = sut.LearnMetaFeatures(observations, targets); var model = sut.SelectModels(observations, metaObservations, targets); var predictions = model.Predict(observations); var metric = new MeanSquaredErrorRegressionMetric(); var actual = metric.Error(targets, predictions); Assert.AreEqual(0.010316259438112841, actual, 0.0001); }
public void RegressionGradientBoostModel_GetVariableImportance() { var(observations, targets) = DataSetUtilities.LoadAptitudeDataSet(); var featureNameToIndex = new Dictionary <string, int> { { "AptitudeTestScore", 0 }, { "PreviousExperience_month", 1 } }; var learner = new RegressionGradientBoostLearner(100, 0.1, 3, 1, 1e-6, 1.0, 0, new GradientBoostSquaredLoss(), false); var sut = learner.Learn(observations, targets); var actual = sut.GetVariableImportance(featureNameToIndex); var expected = new Dictionary <string, double> { { "PreviousExperience_month", 100.0 }, { "AptitudeTestScore", 72.1682473281495 } }; Assert.AreEqual(expected.Count, actual.Count); var zip = expected.Zip(actual, (e, a) => new { Expected = e, Actual = a }); foreach (var item in zip) { Assert.AreEqual(item.Expected.Key, item.Actual.Key); Assert.AreEqual(item.Expected.Value, item.Actual.Value, 0.000001); } }
public void RegressionForestModel_GetVariableImportance() { var(observations, targets) = DataSetUtilities.LoadAptitudeDataSet(); var featureNameToIndex = new Dictionary <string, int> { { "AptitudeTestScore", 0 }, { "PreviousExperience_month", 1 } }; var learner = new RegressionRandomForestLearner(100, 5, 100, 1, 0.0001, 1.0, 42, false); var sut = learner.Learn(observations, targets); var actual = sut.GetVariableImportance(featureNameToIndex); var expected = new Dictionary <string, double> { { "PreviousExperience_month", 100 }, { "AptitudeTestScore", 42.3879919692465 } }; Assert.AreEqual(expected.Count, actual.Count); var zip = expected.Zip(actual, (e, a) => new { Expected = e, Actual = a }); foreach (var item in zip) { Assert.AreEqual(item.Expected.Key, item.Actual.Key); Assert.AreEqual(item.Expected.Value, item.Actual.Value, m_delta); } }