public void Predict_HMMMultivariateAndFTSESeriesLength20_Predicted20Days() { var util = new TestDataUtils(); var series = util.GetSvcData(util.FTSEFilePath, new DateTime(2010, 12, 18), new DateTime(2011, 12, 18)); var test = util.GetSvcData(util.FTSEFilePath, new DateTime(2011, 12, 18), new DateTime(2012, 01, 18)); var model = (HiddenMarkovModelMultivariateGaussianDistribution)HiddenMarkovModelFactory.GetModel(new ModelCreationParameters <IMultivariateDistribution>() { NumberOfStates = _NumberOfStates }); model.Normalized = true; model.Train(series, _NumberOfIterations, _LikelihoodTolerance); var pred = new ViterbiBasedPredictor(); var request = new PredictionRequest { TrainingSet = series, NumberOfDays = 20, TestSet = test }; pred.NumberOfIterations = _NumberOfIterations; pred.LikelihoodTolerance = _LikelihoodTolerance; var predictions = pred.Predict(model, request); Assert.AreEqual(20, predictions.Predicted.Length); }
public void Evaluate_HMMMultivariateAndFTSESeriesLength20_ErrorEstimatorCalculated() { var util = new TestDataUtils(); var series = util.GetSvcData(util.FTSEFilePath, new DateTime(2010, 12, 18), new DateTime(2011, 12, 18)); var test = util.GetSvcData(util.FTSEFilePath, new DateTime(2011, 12, 18), new DateTime(2012, 01, 18)); var model = (HiddenMarkovModelMultivariateGaussianDistribution)HiddenMarkovModelFactory.GetModel(new ModelCreationParameters <IMultivariateDistribution>() { NumberOfStates = _NumberOfStates }); model.Normalized = true; model.Train(series, _NumberOfIterations, _LikelihoodTolerance); var pred = new ViterbiBasedPredictor(); var request = new PredictionRequest { TrainingSet = series, NumberOfDays = 20, TestSet = test }; pred.NumberOfIterations = _NumberOfIterations; pred.LikelihoodTolerance = _LikelihoodTolerance; var predictions = pred.Predict(model, request); var errorRequest = new EvaluationRequest { EstimatorType = ErrorEstimatorType.Value, PredictionParameters = request, PredictionToEvaluate = predictions }; var errorEstimation = pred.Evaluate(errorRequest); for (int i = 0; i < series[0].Length; i++) { Assert.IsTrue(errorEstimation.CumulativeForecastError[i] > 0); Assert.IsTrue(errorEstimation.MeanAbsoluteDeviation[i] > 0); Assert.IsTrue(errorEstimation.MeanAbsolutePercentError[i] > 0); Assert.IsTrue(errorEstimation.MeanError[i] > 0); Assert.IsTrue(errorEstimation.MeanSquaredError[i] > 0); Assert.IsTrue(errorEstimation.RootMeanSquaredError[i] > 0); } }
public void Predict_HMMMixtureAndFTSESeriesLength1_PredictedOneDay() { var util = new TestDataUtils(); var series = util.GetSvcData(util.FTSEFilePath, new DateTime(2010, 12, 18), new DateTime(2011, 12, 18)); var model = (HiddenMarkovModelMixtureDistribution)HiddenMarkovModelFactory.GetModel(new ModelCreationParameters <Mixture <IMultivariateDistribution> >() { NumberOfComponents = _NumberOfComponents, NumberOfStates = _NumberOfStates }); model.Normalized = true; model.Train(series, _NumberOfIterations, _LikelihoodTolerance); var request = new PredictionRequest(); request.TrainingSet = series; request.NumberOfDays = 1; var pred = new ViterbiBasedPredictor(); var res = pred.Predict(model, request); Assert.AreEqual(1, res.Predicted.Length); }