public IParameterSelection SelectParameters(TrainingHeader header, CancellationToken token)
        {
            log.Info("Selecting parameters...");
            if (dataSet.TotalDocuments == 0)
            {
                log.Error("No document found");
                return(null);
            }

            var scheduler = new ConcurrentExclusiveSchedulerPair(TaskScheduler.Default, Environment.ProcessorCount / 2)
                            .ConcurrentScheduler;
            var taskFactory = new TaskFactory(
                token,
                TaskCreationOptions.LongRunning,
                TaskContinuationOptions.LongRunning,
                scheduler);

            // https://www.quora.com/Support-Vector-Machines/SVM-performance-depends-on-scaling-and-normalization-Is-this-considered-a-drawback
            header.Normalization = dataSet.Normalization;

            ParametersSelectionFactory factory = new ParametersSelectionFactory(taskFactory, problemFactory);
            var selection = factory.Create(header, dataSet);

            return(selection);
        }
        public void Setup()
        {
            dataSet = ArffDataSet.CreateSimple("Test");
            dataSet.Header.RegisterNominalClass("One");
            var problemFactory = new ProblemFactory(dataSet);

            factory = new ParametersSelectionFactory(Task.Factory, problemFactory);
        }