Esempio n. 1
0
        public void Train(int[] y, double[][] x, CancellationToken token)
        {
            log.LogInformation("Training SVM...");
            var gridsearch = new GridSearch <SupportVectorMachine, double[], int>
            {
                ParameterRanges =
                    new GridSearchRangeCollection
                {
                    //new GridSearchRange("complexity", new[] { 0.001, 0.01, 0.1, 1, 10, 100, 1000 }),
                    new GridSearchRange("C", new[] { 0.001, 0.01, 0.1, 1, 10 }),
                },
                Learner = p => new LinearDualCoordinateDescent
                {
                    //Complexity = p["complexity"],
                    Loss   = Loss.L2,
                    Kernel = new Linear(p["C"])
                },
                Loss = (actual, expected, m) => new ZeroOneLoss(expected).Loss(actual)
            };

            gridsearch.Token = token;
            if (ParallelHelper.Options != null)
            {
                gridsearch.ParallelOptions = ParallelHelper.Options;
            }

            GridSearchResult <SupportVectorMachine, double[], int> result = gridsearch.Learn(x, y);

            Model = result.BestModel;
            GridSearchParameterCollection parameters = result.BestParameters;
            var error = result.BestModelError;

            log.LogInformation("SVM Trained. Threshold: {0} Constant: {1} Error: {2} ...", Model.Threshold, parameters[0].Value, error);
        }
        public async Task Train(DataSet dataset, CancellationToken token)
        {
            logger.LogDebug("Train");
            IProcessingTextBlock[] data = dataset.Positive.Concat(dataset.Negative).ToArray();
            int[]      yData            = dataset.Positive.Select(item => 1).Concat(dataset.Negative.Select(item => - 1)).ToArray();
            double[][] xData            = vectorSource.GetVectors(data, NormalizationType.None);
            Array[]    randomized       = GlobalSettings.Random.Shuffle(yData, xData).ToArray();
            //standardizer = Standardizer.GetNumericStandardizer(data);
            GridSearch <SupportVectorMachine <Linear>, double[], int> gridsearch = new GridSearch <SupportVectorMachine <Linear>, double[], int>
            {
                ParameterRanges =
                    new GridSearchRangeCollection
                {
                    new GridSearchRange("complexity", new[] { 0.001, 0.01, 0.1, 1, 10 }),
                },
                Learner = p => new LinearDualCoordinateDescent {
                    Complexity = p["complexity"], Loss = Loss.L2
                },
                Loss = (actual, expected, m) => new ZeroOneLoss(expected).Loss(actual)
            };


            gridsearch.Token = token;
            GridSearchResult <SupportVectorMachine <Linear>, double[], int> result = await Task.Run(() => gridsearch.Learn(randomized[1].Cast <double[]>().ToArray(), randomized[0].Cast <int>().ToArray()), token).ConfigureAwait(false);

            Model = result.BestModel;
        }
        protected void searchButton_Click(object sender, EventArgs e)
        {
            //Tar bort listor vid sökning

            HeaderGridFinished.Visible = false;
            HeaderGridOngoing.Visible  = false;
            gridOngoing.Visible        = false;
            gridFinished.Visible       = false;
            GridNotStarted.Visible     = false;
            HeaderNotStarted.Visible   = false;


            //Skicka användarens sökord till webb service
            string SearchWord = searchText.Text;

            GridSearchResult.DataSource = client.GetCasesFromSearchWord(SearchWord).Select(o => new
            {
                ID          = o.Id,
                Firstname   = o.ApplicantsFirstName,
                Lastname    = o.ApplicantsSurname,
                RefNumber   = o.RefNumber,
                Country     = o.CountryOfApplicants,
                Adress      = o.ApplicantsAddress,
                Description = o.Description
            }).ToList();
            GridSearchResult.DataBind();

            //Om det fanns några sökresultat eller inte för det sökta ordet
            if (GridSearchResult.Rows.Count == 0)
            {
                SearchMessage.InnerText    = "Inga sökresultat, försök igen";
                SearchMessage.Visible      = true;
                HeaderGridFinished.Visible = true;
                HeaderGridOngoing.Visible  = true;
                gridOngoing.Visible        = true;
                gridFinished.Visible       = true;
                GridNotStarted.Visible     = true;
                HeaderNotStarted.Visible   = true;
            }
            else
            {
                HeaderGridSearchResultButton.Visible = true;
                SearchMessage.Visible          = false;
                HeaderGridSearchResult.Visible = true;
                GridSearchResult.Visible       = true;
            }
        }