private static void CreateCountryModel(MLContext mlContext, string dataPath, string outputModelPath)
        {
            ConsoleExtensions.ConsoleWriteHeader("Training country forecasting model");

            var trainindDataView = mlContext.Data.LoadFromTextFile <CountryData>(path: dataPath, hasHeader: true, separatorChar: ',');

            var trainer = mlContext.Regression.Trainers.FastTreeTweedie("Label", "Features", learningRate: 0.2);

            var trainingPipeline = mlContext.Transforms.Concatenate(outputColumnName: "NumFeatures", nameof(CountryData.year),
                                                                    nameof(CountryData.month), nameof(CountryData.max), nameof(CountryData.min),
                                                                    nameof(CountryData.std), nameof(CountryData.count), nameof(CountryData.sales),
                                                                    nameof(CountryData.med), nameof(CountryData.prev))
                                   .Append(mlContext.Transforms.Categorical.OneHotEncoding(outputColumnName: "CatFeatures", inputColumnName: nameof(CountryData.country)))
                                   .Append(mlContext.Transforms.Concatenate(outputColumnName: "Features", "NumFeatures", "CatFeatures"))
                                   .Append(mlContext.Transforms.CopyColumns(outputColumnName: "Label", inputColumnName: nameof(CountryData.next)))
                                   .Append(trainer);

            // Cross-Validate with single dataset (since we don't have two datasets, one for training and for evaluate)
            // in order to evaluate and get the model's accuracy metrics
            Console.WriteLine("=============== Cross-validating to get model's accuracy metrics ===============");

            var crossValidationResults = mlContext.Regression.CrossValidate(data: trainindDataView, estimator: trainingPipeline, numberOfFolds: 6, labelColumnName: "Label");

            ConsoleExtensions.PrintRegressionFoldsAverageMetrics(trainer.ToString(), crossValidationResults);

            // Create and Train the model
            var model = trainingPipeline.Fit(trainindDataView);

            //Save model
            mlContext.Model.Save(model, trainindDataView.Schema, outputModelPath);
        }