public RegressionWindow(PlotModel plotModel, LearningResult learningResult, string identifier)
 {
     InitializeComponent();
     RegressionPlot.Model = plotModel;
     this.Title           = string.Format("{0}: TS Dir {1} TS Err {2}", identifier,
                                          learningResult.MPVer1.ToString("E2"), learningResult.TestSetError.ToString("E2"));
 }
Beispiel #2
0
        private void startEvaluatorButton_Click(object sender, RoutedEventArgs e)
        {
            FieldDataAnalyzerDBEntities db = new FieldDataAnalyzerDBEntities();
            DateTime dateFrom = new DateTime(), dateTo = new DateTime();

            if (allDataCheckBox.IsChecked == true)
            {
                dateFrom = db.wells_measurements.Min(x => x.measure_date);
                dateTo   = db.wells_measurements.Max(x => x.measure_date);
            }
            else
            {
                if ((fromDatePicker.SelectedDate == null) || (toDatePicker.SelectedDate == null))
                {
                    MessageBox.Show("Не выбран период расчета.");
                    return;
                }
                dateFrom = (DateTime)fromDatePicker.SelectedDate;
                dateTo   = (DateTime)toDatePicker.SelectedDate;
            }

            Evaluator evaluator = new Evaluator(graph, fieldDescription, coefsProgressBar);

            results = evaluator.Calc(dateFrom, dateTo);
            finalGatherPointGrid.ItemsSource   = results.GPResults;
            finalGatherPointGrid.SelectedIndex = 0;

            Coef_P_Label.Content = String.Format("Давление (Kp): {0}", results.Coef_P);
            Coef_T_Label.Content = String.Format("Температура (Kt): {0}", results.Coef_T);
        }
Beispiel #3
0
        public void CreateAutomatedMappings()
        {
            //Arrange
            var crudRepo = new EfRepository <EntityMapping>(_db, _authAdapter);
            var logger   = new InMemoryLogger();
            var repo     = new EntityMappingRepository(crudRepo, logger, null, null);



            var trainingData = new List <Mapping>
            {
                new Mapping
                {
                    Source      = "Commodity",
                    Destination = "commodity"
                }
            };


            repo.CreateMapping(new ManualMapping
            {
                Mappings      = trainingData,
                SourceId      = _sourceSystemId,
                DestinationId = _destinationSystemId
            });

            var learntMappings = new List <LearntMapping>
            {
                new LearntMapping {
                    Mapping = new Mapping
                    {
                        Source      = "Variety",
                        Destination = "variety"
                    }
                },
                new LearntMapping
                {
                    Mapping = new Mapping
                    {
                        Source      = "Farm",
                        Destination = "farm"
                    }
                }
            };

            var learningResult = new LearningResult(learntMappings);

            //Act
            var result = repo.CreateMapping(new AutomatedMapping
            {
                LearningResult = learningResult,
                SourceId       = _sourceSystemId,
                DestinationId  = _destinationSystemId
            });

            //Assert
            Assert.AreEqual(learntMappings.Count, result);
        }
Beispiel #4
0
        private void DisplayResults(PlotModel regressionPlot, PlotModel errorPlot, LearningResult learningResult, string identifier)
        {
            Window errorWindow = new NetworkErrorWindow(errorPlot, identifier);

            errorWindow.Show();
            Window regressionWindow = new RegressionWindow(regressionPlot, learningResult, identifier);

            regressionWindow.Show();
        }
Beispiel #5
0
        private static void WriteSeedVectors(TextWriter writer, LearningResult learningResult)
        {
            writer.WriteLine("################ Seed Accepted Vectors ################");
            var seedAcceptedVectors =
                learningResult.EncodingResult.SeedAcceptedVector2GroupPath.Keys;

            foreach (var vector in seedAcceptedVectors)
            {
                writer.WriteLine("--------------------------------------");
                if (learningResult.EncodingResult.Vector2Node != null)
                {
                    writer.WriteLine(learningResult.EncodingResult.Vector2Node[vector].Code);
                    writer.WriteLine(GetGoodAncestorNode(
                                         learningResult.EncodingResult.Vector2Node[vector]).Code);
                }
                var features = learningResult.FeatureEncoder.GetFeatureStringsByVector(vector);
                foreach (var feature in features)
                {
                    if (feature.Contains("Requires") || feature.Contains("Contract"))
                    {
                        writer.WriteLine(Beautify(feature));
                    }
                }
                writer.WriteLine();
            }
            writer.WriteLine("################ Seed Rejected Vectors ################");
            var seedRejectedVectors =
                learningResult.EncodingResult.SeedAcceptedVector2GroupPath.Keys;

            foreach (var vector in seedRejectedVectors)
            {
                writer.WriteLine("--------------------------------------");
                if (learningResult.EncodingResult.Vector2Node != null)
                {
                    writer.WriteLine(learningResult.EncodingResult.Vector2Node[vector].Code);
                    writer.WriteLine(GetGoodAncestorNode
                                         (learningResult.EncodingResult.Vector2Node[vector]).Code);
                }
                var features = learningResult.FeatureEncoder.GetFeatureStringsByVector(vector);
                foreach (var feature in features)
                {
                    if (learningResult.EncodingResult.Vector2Node != null)
                    {
                        writer.WriteLine(learningResult.EncodingResult.Vector2Node[vector].Code);
                    }
                    if (feature.Contains("Requires") || feature.Contains("Contract"))
                    {
                        writer.WriteLine(Beautify(feature));
                    }
                }
                writer.WriteLine();
            }
        }
Beispiel #6
0
        private static void PrintWrongResults(
            ClassificationResult classificationResult, LearningResult learningResult)
        {
            var nodeAndVectors = new[] {
                classificationResult.WronglyAcceptedNodes
                .Zip(classificationResult.WronglyAcceptedVectors, Tuple.Create),
                classificationResult.WronglyRejectedNodes
                .Zip(classificationResult.WronglyRejectedVectors, Tuple.Create)
            };
            var titles = new[] {
                "WronglyAcceptedNodes", "WronglyRejectedNodes"
            };

            for (int i = 0; i < nodeAndVectors.Length; i++)
            {
                Console.WriteLine("--------------- " + titles[i] + " ---------------");
                foreach (var nodeAndVector in nodeAndVectors[i])
                {
                    var node   = nodeAndVector.Item1;
                    var vector = nodeAndVector.Item2;
                    Console.WriteLine(node.Code);
                    Console.WriteLine(GetGoodAncestorNode(node).Code);
                    var groupPath  = learningResult.FeatureEncoder.GetGroupPathFromNode(node);
                    var groupIndex = learningResult.Classifier.GetGroupIndex(groupPath);
                    Console.WriteLine("Group: " + (groupIndex + 1) + " (" + groupPath + ")");
                    Console.WriteLine("IsAccepted: "
                                      + learningResult.Classifier.IsAccepted(vector, groupIndex));
                    Console.WriteLine("IsRejected: "
                                      + learningResult.Classifier.IsRejected(vector, groupIndex));
                    var featureStrings =
                        learningResult.FeatureEncoder.GetFeatureStringsByVector(vector);
                    foreach (var featureString in featureStrings)
                    {
                        Console.WriteLine(Beautify(featureString));
                    }
                    if (i == 1)
                    {
                        Console.WriteLine("------------- Rejcting Features -------------");
                        var negativeVector = vector
                                             & learningResult.Classifier.Units[groupIndex].Rejecting;
                        featureStrings =
                            learningResult.FeatureEncoder.GetFeatureStringsByVector(
                                negativeVector);
                        foreach (var featureString in featureStrings)
                        {
                            Console.WriteLine(Beautify(featureString));
                        }
                    }
                    Console.WriteLine("---------------------------------------------");
                }
            }
        }
Beispiel #7
0
        private string GetResultInfo(LearningSettings settings, LearningResult result, List <int> neuronCounts, INetwork network, DateTime now)
        {
            StringBuilder sb = new StringBuilder();

            sb.AppendLine(settings.ToString());
            sb.Append(now.ToLongDateString());
            sb.Append("  ");
            sb.AppendLine(now.ToLongTimeString());
            sb.AppendLine(System.IO.Path.GetFileName(eid.DataSetName));
            sb.AppendFormat("Layer counts: {0}\r\n", string.Join("-", neuronCounts));
            sb.AppendLine(result.ToString());
            return(sb.ToString());
        }
Beispiel #8
0
        private void StartButtonClick(object sender, RoutedEventArgs e)
        {
            var        layers    = LayersTextBox.Text.Split(new string[] { ",", " ", "-", "_", "." }, StringSplitOptions.RemoveEmptyEntries);
            List <int> layersVal = new List <int>();

            foreach (var layer in layers)
            {
                layersVal.Add(int.Parse(layer));
            }

            YesNo bias = (YesNo)BiasCombobox.SelectedItem;
            ActivationFunction activation = (ActivationFunction)ActivationCombobox.SelectedItem;
            int    iterations             = int.Parse(Iterations.Text);
            double learningRate           = LearningRateSlider.Value;
            double momentum = MomentumSlider.Value;
            BackpropagationRunMode runMode = (BackpropagationRunMode)RunCombobox.SelectedItem;
            ProblemType            problem = (ProblemType)ProblemCombobox.SelectedItem;
            CasesData trainingCases;
            CasesData testCases;
            YesNo     appendTestFile = (YesNo)AppendTestCombobox.SelectedItem;

            int input  = testData.First().Count();
            int output = trainingData.First().Count() - input;

            CasesData.InitializeAllData(trainingData, testData, problem, out trainingCases, out testCases);

            layersVal.Insert(0, input);
            layersVal.Add((problem == ProblemType.Regression) ? output : trainingCases.ClassCount);

            NeuralNetwork network = new NeuralNetwork(
                (activation == ActivationFunction.Bipolar) ? (IActivation) new BipolarTanhActivation() : new UnipolarSigmoidActivation(),
                bias == YesNo.Yes, layersVal.ToArray());

            LearningResult learningResult = BackpropagationManager.Run(network, trainingCases, testCases,
                                                                       runMode, iterations, learningRate, momentum);

            if (appendTestFile == YesNo.Yes)
            {
                AppendCSVile(testDataPath, testCases);
            }

            ShowNetworkErrorWindow(learningResult);
            if (problem == ProblemType.Regression)
            {
                ShowRegressionWindow(network, trainingCases, testCases);
            }
            else if (problem == ProblemType.Classification)
            {
                ShowClassificationWindow(network, trainingCases, testCases);
            }
        }
Beispiel #9
0
        public LearningResult Run(ILearningStrategy learningStrategy,
                                  LearningSettings lSettings, IStatusReporter statusHolder)
        {
            //AssertArguments(trainData, testData, learningRate); // TODO: write assertions

            if (!network.IsInitialized)
            {
                network.Initialize(CreationModes.RandomizeWeights);
            }

            LearningResult learningResult = new LearningResult();

            learningResult.MSEHistory         = learningStrategy.Train(network, trainSet, statusHolder);
            learningResult.TestSetError       = AnswerTestSet();
            learningResult.DirectionGuessRate = CalculateDirectionGuessed(DirectionGuess.NetworkToNetwork);
            learningResult.DirectionGuessVer2 = CalculateDirectionGuessed(DirectionGuess.IdealToNetwork);
            learningResult.TimeTaken          = learningStrategy.TimeTaken;
            learningResult.GotStuck           = learningStrategy.GotStuck;
            return(learningResult);
        }
Beispiel #10
0
        public void SaveModel(LearningResult learningResult)
        {
            if (learningResult == null)
            {
                throw new ArgumentNullException(nameof(learningResult));
            }

            var filename = _fileSystem.Path.Combine(_outputDir,
                                                    $"{learningResult.Name}_{DateTime.Now.ToString(_dateFormat)}");

            var jsonFile  = $"{filename}.json";
            var modelPath = $"{filename}.zip";

            var json = JsonConvert.SerializeObject(learningResult, Formatting.Indented);

            _fileSystem.File.WriteAllText(jsonFile, json);

            _mlContext.Model.Save(learningResult.Model, learningResult.Schema, modelPath);

            using (var stream = _fileSystem.FileStream.Create(modelPath, FileMode.Create))
            {
                _mlContext.Model.Save(learningResult.Model, learningResult.Schema, stream);
            }
        }
 public SingleRunReport(INetwork net, DateTime time, LearningResult lres, IDataSet train, IDataSet test)
     : this(net, time, lres)
 {
     TrainSet = train;
     TestSet  = test;
 }
 public SingleRunReport(INetwork net, DateTime time, LearningResult lres)
 {
     LearningResult = lres;
     Network        = net;
     Time           = time;
 }
Beispiel #13
0
        private void ShowNetworkErrorWindow(LearningResult result)
        {
            Window errorWindow = new NetworkErrorWindow(result.MSEHistory);

            errorWindow.Show();
        }
Beispiel #14
0
        private static void PrintWrongResults(
                ClassificationResult classificationResult, LearningResult learningResult) {
            var nodeAndVectors = new[] {
                classificationResult.WronglyAcceptedNodes
                        .Zip(classificationResult.WronglyAcceptedVectors, Tuple.Create),
                classificationResult.WronglyRejectedNodes
                        .Zip(classificationResult.WronglyRejectedVectors, Tuple.Create)
            };
            var titles = new[] {
                "WronglyAcceptedNodes", "WronglyRejectedNodes"
            };

            for (int i = 0; i < nodeAndVectors.Length; i++) {
                Console.WriteLine("--------------- " + titles[i] + " ---------------");
                foreach (var nodeAndVector in nodeAndVectors[i]) {
                    var node = nodeAndVector.Item1;
                    var vector = nodeAndVector.Item2;
                    Console.WriteLine(node.Code);
                    Console.WriteLine(GetGoodAncestorNode(node).Code);
                    var groupPath = learningResult.FeatureEncoder.GetGroupPathFromNode(node);
                    var groupIndex = learningResult.Classifier.GetGroupIndex(groupPath);
                    Console.WriteLine("Group: " + (groupIndex + 1) + " (" + groupPath + ")");
                    Console.WriteLine("IsAccepted: "
                                      + learningResult.Classifier.IsAccepted(vector, groupIndex));
                    Console.WriteLine("IsRejected: "
                                      + learningResult.Classifier.IsRejected(vector, groupIndex));
                    var featureStrings =
                            learningResult.FeatureEncoder.GetFeatureStringsByVector(vector);
                    foreach (var featureString in featureStrings) {
                        Console.WriteLine(Beautify(featureString));
                    }
                    if (i == 1) {
                        Console.WriteLine("------------- Rejcting Features -------------");
                        var negativeVector = vector
                                             & learningResult.Classifier.Units[groupIndex].Rejecting;
                        featureStrings =
                                learningResult.FeatureEncoder.GetFeatureStringsByVector(
                                        negativeVector);
                        foreach (var featureString in featureStrings) {
                            Console.WriteLine(Beautify(featureString));
                        }
                    }
                    Console.WriteLine("---------------------------------------------");
                }
            }
        }
Beispiel #15
0
 private static void WriteSeedVectors(TextWriter writer, LearningResult learningResult) {
     writer.WriteLine("################ Seed Accepted Vectors ################");
     var seedAcceptedVectors =
             learningResult.EncodingResult.SeedAcceptedVector2GroupPath.Keys;
     foreach (var vector in seedAcceptedVectors) {
         writer.WriteLine("--------------------------------------");
         if (learningResult.EncodingResult.Vector2Node != null) {
             writer.WriteLine(learningResult.EncodingResult.Vector2Node[vector].Code);
             writer.WriteLine(GetGoodAncestorNode(
                     learningResult.EncodingResult.Vector2Node[vector]).Code);
         }
         var features = learningResult.FeatureEncoder.GetFeatureStringsByVector(vector);
         foreach (var feature in features) {
             if (feature.Contains("Requires") || feature.Contains("Contract")) {
                 writer.WriteLine(Beautify(feature));
             }
         }
         writer.WriteLine();
     }
     writer.WriteLine("################ Seed Rejected Vectors ################");
     var seedRejectedVectors =
             learningResult.EncodingResult.SeedAcceptedVector2GroupPath.Keys;
     foreach (var vector in seedRejectedVectors) {
         writer.WriteLine("--------------------------------------");
         if (learningResult.EncodingResult.Vector2Node != null) {
             writer.WriteLine(learningResult.EncodingResult.Vector2Node[vector].Code);
             writer.WriteLine(GetGoodAncestorNode
                     (learningResult.EncodingResult.Vector2Node[vector]).Code);
         }
         var features = learningResult.FeatureEncoder.GetFeatureStringsByVector(vector);
         foreach (var feature in features) {
             if (learningResult.EncodingResult.Vector2Node != null) {
                 writer.WriteLine(learningResult.EncodingResult.Vector2Node[vector].Code);
             }
             if (feature.Contains("Requires") || feature.Contains("Contract")) {
                 writer.WriteLine(Beautify(feature));
             }
         }
         writer.WriteLine();
     }
 }