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; } }