Exemplo n.º 1
0
        /// <summary>The initialize.</summary>
        /// <param name="configuration">The configuration.</param>
        /// <param name="logManager">The log manager.</param>
        /// <param name="cacheManager">The cache manager.</param>
        /// <param name="preprocessingManager">The preprocessing manager.</param>
        /// <param name="runStartTime">The run start time.</param>
        /// <param name="timeMeasure">The time measure.</param>
        private void Initialize(
            WebGreaseConfiguration configuration,
            LogManager logManager,
            ICacheManager cacheManager,
            PreprocessingManager preprocessingManager,
            DateTimeOffset runStartTime,
            ITimeMeasure timeMeasure)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException("configuration");
            }

            if (configuration.Global.TreatWarningsAsErrors != null)
            {
                logManager.TreatWarningsAsErrors = configuration.Global.TreatWarningsAsErrors == true;
            }

            // Note: Configuration needs to be set before the other ones.
            this.Configuration = configuration;
            this.Configuration.Validate();

            this.Measure = timeMeasure;

            this.Log = logManager;

            this.Cache = cacheManager;

            this.Preprocessing = preprocessingManager;

            this.SessionStartTime = runStartTime;

            this.Cache.SetContext(this);
            this.Preprocessing.SetContext(this);
        }
Exemplo n.º 2
0
        public ISolver simpleSeparation(int percentTrain)
        {
            int sizeTrainDataset = Convert.ToInt32(InputData.Length * ((double)percentTrain / 100));
            int sizeTestDataset  = InputData.Length - sizeTrainDataset;

            float[][] trainInputDataset  = new float[sizeTrainDataset][];
            float[][] testInputDataset   = new float[InputData.Length - sizeTrainDataset][];
            float[]   trainOutputDataset = new float[sizeTrainDataset];
            float[]   testOutputDataset  = new float[InputData.Length - sizeTrainDataset];
            Array.Copy(InputData, trainInputDataset, sizeTrainDataset);
            Array.Copy(InputData, sizeTrainDataset, testInputDataset, 0, sizeTestDataset);
            Array.Copy(OutputData, trainOutputDataset, sizeTrainDataset);
            Array.Copy(OutputData, sizeTrainDataset, testOutputDataset, 0, sizeTestDataset);

            if (ISolver is INeuralNetwork)
            {
                LearningAlgoManager la = new LearningAlgoManager()
                {
                    usedAlgo      = LS.LearningAlgorithmName,
                    GeneticParams = LS.LAParameters
                };
                ClosingError = la.startLearn(ISolver, trainInputDataset, trainOutputDataset);
            }
            else if (ISolver is DecisionTree)
            {
                DecisionTreeLearning la = new DecisionTreeLearning();
                ClosingError = la.startLearn(ISolver, trainInputDataset, trainOutputDataset);
            }

            PreprocessingManager preprocessing = new PreprocessingManager();

            mistakeTrain = 0;
            List <string> expectedOutputValues = trainOutputDataset.Select(x => Convert.ToString(x)).ToList();
            List <string> obtainedOutputValues = new List <string>();

            for (int i = 0; i < sizeTrainDataset; i++)
            {
                obtainedOutputValues.Add(Convert.ToString(ISolver.Solve(trainInputDataset[i])[0]));
            }
            List <bool> comparisonOfResult = preprocessing.compareExAndObValues(expectedOutputValues, obtainedOutputValues, SelectionID, ParameterID);
            var         counts             = comparisonOfResult.GroupBy(x => x).ToDictionary(x => x.Key, x => x.Count());

            mistakeTrain = (float)counts[false] / (float)sizeTrainDataset;

            mistakeTest          = 0;
            expectedOutputValues = testOutputDataset.Select(x => Convert.ToString(x)).ToList();
            obtainedOutputValues.Clear();
            for (int i = 0; i < sizeTestDataset; i++)
            {
                obtainedOutputValues.Add(Convert.ToString(ISolver.Solve(testInputDataset[i])[0]));
            }
            comparisonOfResult = preprocessing.compareExAndObValues(expectedOutputValues, obtainedOutputValues, SelectionID, ParameterID);
            counts             = comparisonOfResult.GroupBy(x => x).ToDictionary(x => x.Key, x => x.Count());
            mistakeTest        = (float)counts[false] / (float)sizeTestDataset;

            return(ISolver);
        }
Exemplo n.º 3
0
        private ISolver crossValidation(int folds)
        {
            ISolver      curSolver          = ISolver.Copy();
            List <float> listOfTestMistakes = new List <float>();

            for (int k = 0; k < folds; k++)
            {
                float     kMistakeTrain      = 0;
                float     kMistakeTest       = 0;
                float[][] trainInputDataset  = GetInputTrainData(InputData, folds, k);
                float[][] testInputDataset   = GetInputTestData(InputData, folds, k);
                float[]   trainOutputDataset = GetOutputTrainData(OutputData, folds, k);
                float[]   testOutputDataset  = GetTestOutputData(OutputData, folds, k);

                LearningAlgoManager la = new LearningAlgoManager()
                {
                    usedAlgo      = LS.LearningAlgorithmName,
                    GeneticParams = LS.LAParameters
                };
                PreprocessingManager preprocessing = new PreprocessingManager();
                ClosingError = la.startLearn(ISolver, trainInputDataset, trainOutputDataset);
                int           sizeTrainDataset     = trainInputDataset.Length;
                List <string> expectedOutputValues = trainOutputDataset.Select(x => Convert.ToString(x)).ToList();
                List <string> obtainedOutputValues = new List <string>();
                for (int i = 0; i < sizeTrainDataset; i++)
                {
                    obtainedOutputValues.Add(Convert.ToString(ISolver.Solve(trainInputDataset[i])[0]));
                }
                List <bool> comparisonOfResult = preprocessing.compareExAndObValues(expectedOutputValues, obtainedOutputValues, SelectionID, ParameterID);
                var         counts             = comparisonOfResult.GroupBy(x => x).ToDictionary(x => x.Key, x => x.Count());
                kMistakeTrain = (float)counts[false] / (float)sizeTrainDataset;

                int sizeTestDataset = testOutputDataset.Length;
                expectedOutputValues = testOutputDataset.Select(x => Convert.ToString(x)).ToList();
                obtainedOutputValues.Clear();
                for (int i = 0; i < sizeTestDataset; i++)
                {
                    obtainedOutputValues.Add(Convert.ToString(ISolver.Solve(testInputDataset[i])[0]));
                }
                comparisonOfResult = preprocessing.compareExAndObValues(expectedOutputValues, obtainedOutputValues, SelectionID, ParameterID);
                counts             = comparisonOfResult.GroupBy(x => x).ToDictionary(x => x.Key, x => x.Count());
                kMistakeTest       = (float)counts[false] / (float)sizeTestDataset;
                if (k != 0 && kMistakeTest < listOfTestMistakes.Min())
                {
                    curSolver    = ISolver.Copy();
                    mistakeTest  = kMistakeTest;
                    mistakeTrain = kMistakeTrain;
                }
                listOfTestMistakes.Add(kMistakeTest);
            }
            ISolver = curSolver.Copy() as INeuralNetwork;

            return(ISolver);
        }
        public void Solve()
        {
            SelectionID = SelectedLearning.SelectionID;
            ParameterID = SelectedLearning.ParameterID;
            ISolver       isolver         = this.SelectedLearning.LearnedSolver.Soul;
            List <string> curOutputValues = new List <string>();

            foreach (var item in SolvingList)
            {
                curOutputValues.Add(Convert.ToString(isolver.Solve(item.X.Select(x => float.Parse(x.Value)).ToArray())[0]));
            }
            PreprocessingManager preprocessing = new PreprocessingManager();

            outputValues = preprocessing.getAppropriateValuesAfterInversePreprocessing(curOutputValues, SelectionID, ParameterID);
            foreach (var item in SolvingList)
            {
                for (int i = 0; i < item.Y.Count; i++)
                {
                    item.Y[i] = outputValues[i];
                }
            }
        }
Exemplo n.º 5
0
        /// <summary>Initializes a new instance of the <see cref="WebGreaseContext"/> class. The web grease context.</summary>
        /// <param name="configuration">The configuration</param>
        /// <param name="logManager">The log Manager.</param>
        /// <param name="parentCacheSection">The parent Cache Section.</param>
        /// <param name="preprocessingManager">The preprocessing Manager.</param>
        public WebGreaseContext(WebGreaseConfiguration configuration, LogManager logManager, ICacheSection parentCacheSection = null, PreprocessingManager preprocessingManager = null)
        {
            var runStartTime = DateTimeOffset.Now;

            configuration.Validate();
            var timeMeasure  = configuration.Measure ? new TimeMeasure() as ITimeMeasure : new NullTimeMeasure();
            var cacheManager = configuration.CacheEnabled ? new CacheManager(configuration, logManager, parentCacheSection) as ICacheManager : new NullCacheManager();

            this.Initialize(
                configuration,
                logManager,
                cacheManager,
                preprocessingManager != null ? new PreprocessingManager(preprocessingManager) : new PreprocessingManager(configuration, logManager, timeMeasure),
                runStartTime,
                timeMeasure);
        }