/// <summary> /// Execute the training operation. /// </summary> /// <param name="indexer">The data indexer.</param> /// <returns>The trained <see cref="IMaxentModel"/> model.</returns> protected override IMaxentModel DoTrain(IDataIndexer indexer) { Display("Incorporating indexed data for training..."); indexer.Execute(); contexts = indexer.GetContexts(); values = indexer.Values; numTimesEventsSeen = indexer.GetNumTimesEventsSeen(); numEvents = indexer.GetNumEvents(); numUniqueEvents = contexts.Length; outcomeLabels = indexer.GetOutcomeLabels(); outcomeList = indexer.GetOutcomeList(); predLabels = indexer.GetPredLabels(); numPreds = predLabels.Length; numOutcomes = outcomeLabels.Length; Display("done."); Display("\tNumber of Event Tokens: " + numUniqueEvents); Display("\t Number of Outcomes: " + numOutcomes); Display("\t Number of Predicates: " + numPreds); Display("Computing model parameters..."); // ReSharper disable once CoVariantArrayConversion - we read the parameters ;) Context[] finalParameters = FindParameters(); Display("...done.\n"); return(new NaiveBayesModel(finalParameters, predLabels, outcomeLabels)); }
/// <summary> /// Train a model using the Perceptron algorithm. /// </summary> /// <param name="iterations">The number of Perceptron iterations to perform.</param> /// <param name="indexer">The object which will be used for event compilation.</param> /// <param name="cutoff">The number of times a predicate must occur to be used in a model.</param> /// <param name="useAverage"></param> /// <returns>The newly trained model, which can be used immediately or saved to disk using a <see cref="IO.PerceptronModelWriter"/> object.</returns> public AbstractModel TrainModel(int iterations, IDataIndexer indexer, int cutoff, bool useAverage) { Display("Incorporating indexed data for training..."); info.Append("Trained using Perceptron algorithm.\n\n"); // Executes the data indexer indexer.Execute(); contexts = indexer.GetContexts(); values = indexer.Values; numTimesEventsSeen = indexer.GetNumTimesEventsSeen(); numEvents = indexer.GetNumEvents(); numUniqueEvents = contexts.Length; outcomeLabels = indexer.GetOutcomeLabels(); outcomeList = indexer.GetOutcomeList(); predLabels = indexer.GetPredLabels(); numPreds = predLabels.Length; numOutcomes = outcomeLabels.Length; Display("\ndone.\n"); info.Append("Number of Event Tokens: {0}\n" + " Number of Outcomes: {1}\n" + " Number of Predicates: {2}\n", numEvents, numOutcomes, numPreds); Display("\tNumber of Event Tokens: " + numUniqueEvents); Display("\t Number of Outcomes: " + numOutcomes); Display("\t Number of Predicates: " + numPreds); Display("Computing model parameters."); var finalParameters = FindParameters(iterations, useAverage); Display("\ndone.\n"); // ReSharper disable once CoVariantArrayConversion return(new PerceptronModel(finalParameters, predLabels, outcomeLabels) { info = info }); }
/// <summary> /// Train a model using the Perceptron algorithm. /// </summary> /// <param name="iterations">The number of Perceptron iterations to perform.</param> /// <param name="indexer">The object which will be used for event compilation.</param> /// <param name="cutoff">The number of times a predicate must occur to be used in a model.</param> /// <param name="useAverage"></param> /// <returns>The newly trained model, which can be used immediately or saved to disk using a <see cref="IO.PerceptronModelWriter"/> object.</returns> public AbstractModel TrainModel(int iterations, IDataIndexer indexer, int cutoff, bool useAverage) { Display("Incorporating indexed data for training..."); info.Append("Trained using Perceptron algorithm.\n\n"); // Executes the data indexer indexer.Execute(); contexts = indexer.GetContexts(); values = indexer.Values; numTimesEventsSeen = indexer.GetNumTimesEventsSeen(); numEvents = indexer.GetNumEvents(); numUniqueEvents = contexts.Length; outcomeLabels = indexer.GetOutcomeLabels(); outcomeList = indexer.GetOutcomeList(); predLabels = indexer.GetPredLabels(); numPreds = predLabels.Length; numOutcomes = outcomeLabels.Length; Display("\ndone.\n"); info.Append("Number of Event Tokens: {0}\n" + " Number of Outcomes: {1}\n" + " Number of Predicates: {2}\n", numEvents, numOutcomes, numPreds); Display("\tNumber of Event Tokens: " + numUniqueEvents); Display("\t Number of Outcomes: " + numOutcomes); Display("\t Number of Predicates: " + numPreds); Display("Computing model parameters."); var finalParameters = FindParameters(iterations, useAverage); Display("\ndone.\n"); // ReSharper disable once CoVariantArrayConversion return new PerceptronModel(finalParameters, predLabels, outcomeLabels) { info = info }; }