public void RegressionAdaBoostModel_Load() { var(observations, targets) = DataSetUtilities.LoadAptitudeDataSet(); var reader = new StringReader(RegressionDecisionTreeModelString); var sut = RegressionAdaBoostModel.Load(() => reader); var predictions = sut.Predict(observations); var evaluator = new MeanAbsolutErrorRegressionMetric(); var error = evaluator.Error(targets, predictions); Assert.AreEqual(0.22527472527472531, error, 0.0000001); }
public void RegressionAdaBoostModel_Load() { var parser = new CsvParser(() => new StringReader(Resources.AptitudeData)); var observations = parser.EnumerateRows(v => v != "Pass").ToF64Matrix(); var targets = parser.EnumerateRows("Pass").ToF64Vector(); var reader = new StringReader(RegressionDecisionTreeModelString); var sut = RegressionAdaBoostModel.Load(() => reader); var predictions = sut.Predict(observations); var evaluator = new MeanAbsolutErrorRegressionMetric(); var error = evaluator.Error(targets, predictions); Assert.AreEqual(0.22527472527472531, error, 0.0000001); }
/// <summary> /// Predição de Floresta Aleatória e Rede Neural /// </summary> public void RegressionLearner_Learn_And_Predict() { #region Treinamento da Floresta Aleatória var parser = new CsvParser(() => new StringReader(treinamento)); var targetName = "T"; var observations = parser.EnumerateRows(c => c != targetName) .ToF64Matrix(); var targets = parser.EnumerateRows(targetName) .ToF64Vector(); UltimaObservacao = new double[] { observations[observations.RowCount - 1, 0], observations[observations.RowCount - 1, 2], observations[observations.RowCount - 1, 3], observations[observations.RowCount - 1, 4], observations[observations.RowCount - 1, 5], targets[targets.Count() - 1] }; var learner = new RegressionRandomForestLearner(trees: 500); model = learner.Learn(observations, targets); #endregion #region Teste da Floresta Aleatória parser = new CsvParser(() => new StringReader(teste)); var observationsTeste = parser.EnumerateRows(c => c != targetName) .ToF64Matrix(); var targetsTeste = parser.EnumerateRows(targetName) .ToF64Vector(); // predict the training and test set. var trainPredictions = model.Predict(observations); var testPredictions = model.Predict(observationsTeste); // create the metric var metric = new MeanSquaredErrorRegressionMetric(); // measure the error on training and test set. trainError = metric.Error(targets, trainPredictions); testError = metric.Error(targetsTeste, testPredictions); #endregion #region Treinamento da Rede Neural var net = new NeuralNet(); net.Add(new InputLayer(6)); net.Add(new DropoutLayer(0.2)); net.Add(new DenseLayer(800, Activation.Relu)); net.Add(new DropoutLayer(0.5)); net.Add(new DenseLayer(800, Activation.Relu)); net.Add(new DropoutLayer(0.5)); net.Add(new SquaredErrorRegressionLayer()); var learnernet = new RegressionNeuralNetLearner(net, iterations: 500, loss: new SquareLoss()); modelnet = learnernet.Learn(observations, targets); #endregion #region Teste da Rede Neural trainPredictions = modelnet.Predict(observations); testPredictions = modelnet.Predict(observationsTeste); trainErrorNet = metric.Error(targets, trainPredictions); testErrorNet = metric.Error(targetsTeste, testPredictions); #endregion #region Treinamento Ada var learnerada = new RegressionAdaBoostLearner(maximumTreeDepth: 35, iterations: 2000, learningRate: 0.1); modelada = learnerada.Learn(observations, targets); #endregion #region Teste Ada trainPredictions = modelada.Predict(observations); testPredictions = modelada.Predict(observationsTeste); trainErrorAda = metric.Error(targets, trainPredictions); testErrorAda = metric.Error(targetsTeste, testPredictions); string stargets = ""; string strainPredictions = ""; string stargetsTeste = ""; string stestPredictions = ""; foreach (var i in targets) { stargets += i + ";"; } foreach (var i in trainPredictions) { strainPredictions += i + ";"; } foreach (var i in targetsTeste) { stargetsTeste += i + ";"; } foreach (var i in testPredictions) { stestPredictions += i + ";"; } #endregion }